网络层Library是App最常用的库,需要考虑稳定性,后期的扩展性,更换核心网络库后对项目的影响,ZZNet采用okhttp作为核心网络库。
需求描述:
- 支持HTTP/HTTPS;
- 请求支持取消;
- 支持校验器,可用于统一的JSON校验;
- 支持拦截器,可用于缓存的处理;
- 支持重试次数和自定义重试规则;
- 支持文件上传,上传进度,多文件上传,取消上传;
- 支持文件下载,下载进度,断点续传,取消下载;
- 自动处理错误描述和详细的错误类型;
架构设计:
架构实现:
ZZNetValidator,请求及响应校验器
可以针对单个请求配置校验器或所有请求配置统一的校验器,校验请求参数或响应数据的合法性等。例如:可以在请求前校验登录状态,在响应后校验服务端返回的token是否合法,是否需要重新登录等,可以在此处做统一的处理。
|
|
ZZNetInterceptor,请求及响应拦截器
针对请求生命周期的各个阶段进行拦截,增强网络库的扩展性。例如:随着业务的发展,API如果需要引入缓存机制,可以在拦截器中处理,隔离或降低对业务层的侵入性。
|
|
ZZNetProcessor,网络请求及响应核心处理器
网络请求处理的抽象接口,把网络请求过程拆分为处理请求和处理响应,可以根据业务需要添加实现;目前有3个实现类,ZZNetStringProcessor(处理字符串类型的响应数据)、 ZZNetUploadProcessor(处理文件上传)、 ZZNetDownloadProcessor(处理文件下载)。
|
|
ZZNetStringProcessor,字符串处理器
|
|
ZZNetUploadProcessor,文件上传处理器
|
|
ZZNetDownloadProcessor,文件下载处理器
|
|
自定义重试规则
允许请求失败后的重试操作,可以自定义重试规则,重试次数等。例如:客户端支付成功后需要查询支付状态,服务端的支付状态依赖第三方支付平台的通知,为降低通知延迟对客户端的影响,可以自定义重试规则,当支付失败时多重试几次。
重试机制规则抽象接口
|
|
重试机制具体使用方法
|
|