uu快3神彩_uu快3app开户_彩神争8

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

时间:2019-12-31 15:28:24 出处:uu快3神彩_uu快3app开户_彩神争8

注意严格来说这是有一一兩个 业务类,所以是不应该放入 core 目录下的。

关键的代码是在 doRequest() 土依据中,该土依据实现了网络请求的代码,返回有一一兩个 Pair<Integer,String>对象,该对象的 first 属性是有一一兩个 请求 code ,用于标识网络请求码(即是网络请求返回的60 ,404,60 1等)。而 second 就是 网络请求的数据。

后后 让要我 们构建的网络请求框架要不需要 除理以下难题:

这种 类就是 网络请求框架提供给业务类使用的有一一兩个 接口。本文一结束英文就提出来 json 作为交互数据请求的协议。没法此类的封装总要促进业务数据的访问。

本文运行的结果

哪几种网络请求库很大程度上提高应用系统进程猿的编码速度。后后 随着业务的发展,App 变得没法大,让要我 们将哪几种网络请求库加入到项目中直接使用,对让要我 们业务类的入侵是非常强的。后后 要进行业务分离时,哪几种网络请求代码将是有一一兩个 阻止让要我 们进一步工作的绊脚石。对开发者来说是非常痛苦的。

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

一般来说,目前绝大帕累托图 App 的数据请求总要使用 HTTP 协议,而数据交换的协议使用 json 格式。后后 不需要 封装有一一兩个 通用的请求接口。(当然还有或多或少或多或少协议,累似 微信的 mars ,后后 封装的思路是一致的,本文为了简单说明,暂时使用通用网络请求框架,不排除之总要对 mars 的封装)

假设有一一兩个 请求业务数据接口,返回数据是有一一兩个 字符串。没法让要我 们使用让要我 们的框架就是 原先来使用。本文例子是请求让要我 们项目中的 README.md 的内容。用起来非常简单,假如有一天继承于 BaseTextRequest,并实现 getUrl()onRequestFinish() onRequestError()getHttpMethod() 这几条土依据。

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

在 App 开发中网络请求是每个开发者必备的开发库,也跳出了或多或少优秀开源的网络请求库。累似

首先预览一下框架底部形态

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

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

这种 有一一兩个 土依据就是 具体业务类要除理的逻辑。

这种 类是有一一兩个 泛型类,继承于 Request 并对第三方请求库的封装。累似 本文就是 对 okhttp 的封装,而泛型 T 对象就是 请求得到的具体数据类型。后后 要对或多或少请求库进行封装,就不需要 参考这种 类的实现。

注意这种 类封装是纯粹的网络请求,不应该暗含业务类相关的代码。后后 无除理上文提出的有一一兩个 难题。

所以在 App 组件化/模块化开发架构思路 一文中,让要我 们把网络请求作为内核层的有一一兩个 组件。

热门

热门标签