您的位置:首页 > 理论基础 > 计算机网络

APP研发录读书笔记:网络底层框架设计

2016-06-02 19:06 736 查看
一.统一响应实体类Response

     我们一般采用JSON作为API返回结果,数据格式一般为:

{
"errorCode":0,
"errorMessage":"";
"result":{}
}
    一般有错误码,错误消息及返回数据,因此可以定义Response如下:

public class Response {
private int errorCode;
private String errorMessage;
private String result;

public int getErrorCode() {
return errorCode;
}

public void setErrorCode(int errorCode) {
this.errorCode = errorCode;
}

public String getErrorMessage() {
return errorMessage;
}

public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}

public String getResult() {
return result;
}

public void setResult(String result) {
this.result = result;
}
}
      若是result都可对应一个实体类,可以将Response定义为泛型,进行更为简便的实体转化。

二、xml配置文件统一接口信息

     在url.xml文件中定义:

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<url>
<Node
Key="login"
NetType="post"
Expires="300"
Url="http://www.***.com/data/login"/>

<Node
Key="getUserInfo"
NetType="get"
Expires="300"
Url="http://www.***.com/data/getUserInfo"/>
</url></span>

     在启动应用时,首先完成xml文件的读取,并将每一个接口映射到一个实体。在发起请求时,根据请求接口名进行相关信息的组合即可。

三.数据缓存设计

    调用一次API后,一段时间内不再调用。对于不经常改变、无实时性要求的数据,如商品描述,设置较长的缓存时间,而对于频繁变动、实时性要求的数据可以设置较短的缓存时间。

四、MockService
       
     在App开发过程中经常会遇到MobileAPI未开发好的情况,此时可以在App端参照MobileAPI接口参数及响应进行MockService设计。设计关键点:

针对需要Mock的数据接口指定哪个子类生成数据:    
<Node
Key="login"
NetType="post"
Expires="300"
MockClass="com.***.mockdata.MockLogin"
Url="http://www.***.com/data/login"/>


每一个Mock子类继承MockService,实现各自的geJsonData
public abstract class MockService{
public abstract String getJsonData();
}
public class MockLogin extends MockService{

public String getJsondata(){

User user=new user();
user.setuserName("zhangsan");
user.setStars(123);
user.setUserId(17645);
Response response=new Response();
response.setErrorCode(0);
response.setErrorMessage("succeed");
response.setResult(JSON.toJSONString(user));
return JSON.toJSONString(response);

}
}


使用方法:

<span style="font-size:14px;">MockService mocksService=(MockService)class.forName(urlData.getMockClass()).newInstance();
String strResp=mocksService.getJsonData();
Response response=JSON.parseObject(strResp,Response.class);</span>


五、HTTP头使用

      
     1.利用请求头传递信息及校验:如对appKey,appId,clientType进行拼接+MD5传输。
      2.时间校准:每调用MobileAPI,获取响应头中Date,计算本地时间与服务器时间的差值,通过这个差值就可实时拿到服务器的            时间
      3.开启gzip压缩:减少存储空间及传输时间。在进行解析时,通过判断响应头HTTPResponse中content-encoding中是否包含gzip,进而采用GZIPInputStream还是常规方法进行流处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 读书笔记