不同的网络请求有不同的返回结果,当同时也有很多相同的地方,比如数据的整体结构可以是这样:
{
"status": 1000,
"msg": "调用权限失败",
"data": {
***
***
}
}
如果接口数据的设计如上,那么每个请求都会有如下三点相同的部分
状态码
网络异常
相同的网络请求策略
既然有相同的部分,那么就有必要对相同的部分统一处理
主要功能图解
整体采用MVP设计模式如下
MVP架构
其中ModelPresenter为所有网络请求的Presenter,如下
ModelPresenter
DataSevice为Retrofit请求接口如下
DataService
网络层的整体流程如下
网络层流程
其中第三层返回的是HttpBean,第二层返回的是业务层需要的T类型
具体实现
模型设计
在和后台对接的时候,定义一个统一的数据结构,这样才好统一处理状态码,利用泛型,我们可以设计接口返回的数据模型为
public class HttpBean {
private String msg;
private T data;
private int status;
}
不同的网络请求只需要传入相应的数据模型即可,那么利用retrofit请求数据的接口如下
public interface DataService {
@GET(RequestCons.MY_BOX)
Observable> getBox(@Query("client_id") String client_id, @Query("client_secret") String secret, @Query("visit_user_id") long user_id);
@GET(RequestCons.COMMENTS_LIST)
Observable> getComments(@Query("client_id") String client_id, @Query("client_secret") String secret, @Query("object_id") long object_id);