1. 程式人生 > >APP研發錄讀書筆記:網路底層框架設計

APP研發錄讀書筆記:網路底層框架設計

一.統一響應實體類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還是常規方法進行流處理