APP研發錄讀書筆記:網路底層框架設計
阿新 • • 發佈:2019-02-10
一.統一響應實體類Response
我們一般採用JSON作為API返回結果,資料格式一般為:
{
"errorCode":0,
"errorMessage":"";
"result":{}
}
一般有錯誤碼,錯誤訊息及返回資料,因此可以定義Response如下:
若是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; } }
二、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,實現各自的geJsonDatapublic 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>