目前已經(jīng)有不少Android客戶端在使用Retrofit+RxJava實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求了,相比于xUtils,Volley等網(wǎng)絡(luò)訪問框架,其具有網(wǎng)絡(luò)訪問效率高(基于OkHttp)、內(nèi)存占用少、代碼量小以及數(shù)據(jù)傳輸安全性高等特點(diǎn)。
Retrofit源碼更是經(jīng)典的設(shè)計(jì)模式教程,筆者已在之前的文章中分享過自己的一些體會(huì),有興趣的話可點(diǎn)擊以下鏈接了解:《Retrofit源碼設(shè)計(jì)模式解析(上)》、《Retrofit源碼設(shè)計(jì)模式解析(下)》
但在具體業(yè)務(wù)場(chǎng)景下,比如涉及到多種網(wǎng)絡(luò)請(qǐng)求(GET/PUT/POST/DELETE等),多種請(qǐng)求方式(異步/同步)時(shí),按照Retrofit官方文檔實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求仍然會(huì)顯得比較繁瑣,本文主要介紹筆者基于Retrofit+RxJava封裝的Android分層網(wǎng)絡(luò)請(qǐng)求框架,適用于下圖所示的業(yè)務(wù)場(chǎng)景:Android移動(dòng)端通過移動(dòng)網(wǎng)關(guān)調(diào)用接口平臺(tái)發(fā)布的業(yè)務(wù)服務(wù)。
上述業(yè)務(wù)架構(gòu)可能是目前移動(dòng)應(yīng)用中使用的比較廣的,其具有以下優(yōu)點(diǎn):
由于移動(dòng)網(wǎng)關(guān)系統(tǒng)和統(tǒng)一服務(wù)發(fā)布平臺(tái)的存在,移動(dòng)端不需要直接調(diào)用業(yè)務(wù)系統(tǒng)的服務(wù),避免了移動(dòng)端同時(shí)對(duì)接多個(gè)業(yè)務(wù)系統(tǒng),降低移動(dòng)端系統(tǒng)的復(fù)雜性;
移動(dòng)網(wǎng)關(guān)會(huì)對(duì)移動(dòng)端的請(qǐng)求進(jìn)行鑒權(quán),屏蔽外部惡意訪問,有效提高內(nèi)部業(yè)務(wù)系統(tǒng)的安全性;
統(tǒng)一服務(wù)發(fā)布平臺(tái)集成所有的業(yè)務(wù)接口,對(duì)外提供格式統(tǒng)一的接口服務(wù),這對(duì)于內(nèi)部系統(tǒng)的可維護(hù)性和可擴(kuò)展性是至關(guān)重要的。
業(yè)務(wù)系統(tǒng)只需要按照格式將其服務(wù)在接口平臺(tái)上發(fā)布即可,無需關(guān)心具體的調(diào)用者。
因此,本文分享的分層網(wǎng)絡(luò)請(qǐng)求框架的前提是:Android移動(dòng)端直接對(duì)接移動(dòng)網(wǎng)關(guān)。主要有以下內(nèi)容: