App的開發(fā)無外乎從網(wǎng)絡(luò)端獲取數(shù)據(jù)顯示在屏幕上,數(shù)據(jù)做些緩存或者持久化,所以網(wǎng)絡(luò)層極為重要。原來只是把AFNetwork二次封裝了一下,使得調(diào)用變得很簡單,并沒有深層次的考慮一些問題。

前言

參考:
網(wǎng)絡(luò)層設(shè)計方案
這篇文章提的問題也正是我平時經(jīng)常糾結(jié)的,但是一直沒有深入思考。文章給的解決方案和為什么這樣做讓人茅塞頓開。以下主要就是我的觀后感。

三個問題

  • 使用哪種交互模式來跟業(yè)務(wù)層做對接?

  • 是否有必要將API返回的數(shù)據(jù)封裝成對象然后再交付給業(yè)務(wù)層?

  • 使用集約化調(diào)用方式還是離散型調(diào)用方式去調(diào)用API?

我的設(shè)計

基本上每個網(wǎng)絡(luò)層都會涉及到這三個問題。
我原先的設(shè)計是:

//APIClient.h@interface APIClient : AFHTTPSessionManager

+ (instancetype)sharedRequestDataClient;/*
 * 用json格式(POST)
 */+ (void)requestDataPostMethodWithHTTPPath:(NSString *)path