最近重新看了一下田神基於af封裝的網路請求功能,略有所心得,想寫一些自己粗淺的心得,沒有那麼多專業術語,方便自己後面檢視封裝的思路!
網路請求,簡單的理解,就是一句話:構建client,然後發出請求,接受返回資料!
1.包含正常介面呼叫和web service介面呼叫;
2.不同功能模組資料傳遞資料編碼方式非utf-8,包含多種編碼(對接多個老的系統的時候,可能會有);
3.返回資料型別是不同的(json,直接就是data資料流(非json格式),或者是xml格式的資料);
等等.....以上這些是比較複雜的情況,也是可變元素的簡單舉例,正常的來講公司專案不會出現,編碼不一致,返回資料不一致,加密方式不一致等的問題,所以常見大部分的封裝方法都是集約式的呼叫,使用上手比較容易!
上述的問題是自身在實際工作中遇到的一些問題,因此看到田神寫的封裝方法以後,感覺離散型的呼叫方式,以及結構分層給我很大的啟發,關於集約式和離散式方法的呼叫區別優缺點,感興趣的同學可以網上查一下,這裡不做過多的說明,簡單的意思從字面就可以理解。
1.構建請求生成類,把request生成單獨分割出來,這樣構建簡單清晰明了。
2.構建這套api的響應類response類,把原本就只是反饋伺服器返回資訊方法,結合資料的解析,把反饋結果提公升層次,遮蔽掉對開發無意義的一些狀態字段,這樣就使返回結果可讀性更高,使用者無需關心內部的轉化!
3.構建請求管理類,呼叫生成的request以及接受返回的response,到這一步,整個請求的構建就已經完成了;
4.結合實際業務層和整個請求發起到結束來考慮構建本類baseapi和需要設定的**:
構建baseapi的childdelegate方法,可能每次都需要變的引數,可能根據模組而改變的引數或者在本類中定義方法,卻沒有任何實現的方法都放在在childdelegate中,盡可能的避免因為reload父類方法而產生的很難察覺的bug,主要是為了完成request的配置資訊以及需要的快取話,設定快取的相關配置資訊;
構建baseapi的paramsoucredelegate方法,把引數獲取單拎出來!
構建baseapi的callbackdelegate方法,這個就不多做說明了!
構建baseapi的validatordelegate方法,這個就是做請求引數的校驗以及返回資料的校驗,這個只是做初步校驗,如果校驗不通過,後續方法就不會執行了!
構建baseapi的interceptordelegate方法,這個是分別攔截成功和失敗前後,以及api調起前後的攔截;可以方便做一些ui或者邏輯上的處理!
構建baseapi的reformerdelegate方法,這個是資料處理的**方法,生產業務所需的資料,以及不同子api產生相同業務時的業務整合!
當然,如果需要快取的話,就需要在第4步的前面加上快取管理類的構建,上述簡單分析網路請求封裝的層級關係,內部實現當然還是有很多的邏輯需要在baseapi中處理的!
iOS 封裝網路請求
在開發過程中,很多模組都要去請求網路資料,如果每遇到一次都要去編寫請求網路的方法,為了方便,封裝網路請求 h檔案 寫乙個列舉標示請求型別 typedef ns enum nsinteger,requsttype 定義兩個block,把block當做引數 typedef void success ns...
iOS 網路請求 與 網路封裝
void viewdidload void buttonclick uibutton button void getsynchrnized void postsynchrnized void getasynchrnized void postasynchrnized 新建立乙個類,繼承與nsobje...
iOS基於Https的網路請求
https簡單說明 https 全稱 hyper text transfer protocol over secure socket layer 是以安全為目標的http通道,簡單講是http的安全版。即http下加入ssl層,https的安全基礎是ssl 安全套接字層 因此加密的詳細內容就需要ss...