App 组件化/模块化之路——如何封装网络请求框架

  • 时间:
  • 浏览:0

本文运行的结果

注意严格来说这是有有还还有一个 业务类,却说是不应该放进 core 目录下的。

这有有还还有一个 辦法 却说具体业务类要防止的逻辑。

之后请求网络是耗时的操作,rxjava2 来实现网络请求异步操作。 request 是对 RequestWrapper.doRequest() 辦法 的封装,并得到有有还还有一个 Flowable 对象。同时定义了 onRequestFinish()onRequestError() 有有还还有一个 辦法 。

假设有有有还还有一个 请求业务数据接口,返回数据是有有还还有一个 字符串。没办法 朋友使用朋友的框架却说原却说使用。本文例子是请求朋友项目中的 README.md 的内容。用起来非常简单,假若继承于 BaseTextRequest,并实现 getUrl()onRequestFinish() onRequestError()getHttpMethod() 这十多少 辦法 。

首先预览一下框架特性

一般来说,目前绝大每种 App 的数据请求有的是使用 HTTP 协议,而数据交换的协议使用 json 格式。之后都能能封装有有还还有一个 通用的请求接口。(当然还有这种这种协议,同类微信的 mars ,之后封装的思路是一致的,本文为了简单说明,暂时使用通用网络请求框架,不排除原本会对 mars 的封装)

你这种类却说网络请求框架提供给业务类使用的有有还还有一个 接口。本文一结束了英语 就提出来 json 作为交互数据请求的协议。没办法 此类的封装有的是利于业务数据的访问。

关键的代码是在 doRequest() 辦法 中,该辦法 实现了网络请求的代码,返回有有还还有一个 Pair<Integer,String>对象,该对象的 first 属性是有有还还有一个 请求 code ,用于标识网络请求码(即是网络请求返回的200,404,2001等)。而 second 却说网络请求的数据。

那此网络请求库很大程度上提高多多进程 猿的编码带宽单位。之后随着业务的发展,App 变得没办法 大,朋友将那此网络请求库加入到项目中直接使用,对朋友业务类的入侵是非常强的。之后要进行业务分离时,那此网络请求代码将是有有还还有一个 阻止朋友进一步工作的绊脚石。对开发者来说是非常痛苦的。

之后朋友构建的网络请求框架要都能能防止以下难题:

你这种类是有有还还有一个 泛型类,继承于 Request 并对第三方请求库的封装。同类本文却说对 okhttp 的封装,而泛型 T 对象却说请求得到的具体数据类型。之后要对这种请求库进行封装,就都能能参考你这种类的实现。

你这种类封装了网络请求的通用接口,定义请求接口 doRequest() 、获取请求连接 getUrl() 、获取请求辦法 getHttpMethod() 等。

却说在 App 组件化/模块化开发架构思路 一文中,朋友把网络请求作为内核层的有有还还有一个 组件。

注意你这种类封装是纯粹的网络请求,不应该涵盖业务类相关的代码。之后无防止上文提出的有有还还有一个 难题。

你这种类是个抽象类,对 IRequest 的实现。目前是有有还还有一个 简单封装的实现。

在 App 开发中网络请求是每个开发者必备的开发库,也突然出现了这种优秀开源的网络请求库。同类

项目地址:https://github.com/wecodexyz/Componentization