App的開發(fā)無(wú)外乎從網(wǎng)絡(luò)端獲取數(shù)據(jù)顯示在屏幕上,數(shù)據(jù)做些緩存或者持久化,所以網(wǎng)絡(luò)層極為重要。原來(lái)只是把AFNetwork二次封裝了一下,使得調(diào)用變得很簡(jiǎn)單,并沒有深層次的考慮一些問題。
前言
參考:
網(wǎng)絡(luò)層設(shè)計(jì)方案
這篇文章提的問題也正是我平時(shí)經(jīng)常糾結(jié)的,但是一直沒有深入思考。文章給的解決方案和為什么這樣做讓人茅塞頓開。以下主要就是我的觀后感。
三個(gè)問題
使用哪種交互模式來(lái)跟業(yè)務(wù)層做對(duì)接?
是否有必要將API返回的數(shù)據(jù)封裝成對(duì)象然后再交付給業(yè)務(wù)層?
使用集約化調(diào)用方式還是離散型調(diào)用方式去調(diào)用API?
我的設(shè)計(jì)
基本上每個(gè)網(wǎng)絡(luò)層都會(huì)涉及到這三個(gè)問題。
我原先的設(shè)計(jì)是:
//APIClient.h@interface APIClient : AFHTTPSessionManager + (instancetype)sharedRequestDataClient;/* * 用json格式(POST) */+ (void)requestDataPostMethodWithHTTPPath:(NSString *)path