我們正在使用AFNetworking從我們的移動應用程序進行版本化的API請求。我應該有多個AFHTTPClient來組織我的代碼
爲了定位我們API的特定版本,我們的應用程序發送了一個特殊的Accept Header。
我組織了我的代碼庫,以便每個資源(用戶,會話,圖像等)都有自己的AFHTTPClient,它在初始化時設置Accept頭。
+ (UsersAPIClient *)sharedClient
{
// removed singleton setup code for brevity
// here's where my version gets set for all requests pertaining to Users
__sharedClient = [[UsersAPIClient alloc] initWithBaseURL:url andVersion:2];
return __sharedClient;
}
我將它設置了這種方式使每一個請求(創建用戶,編輯用戶,獲得用戶),就不必擔心調用哪個版本;當特定的APIClient被創建時,這已經完成了。
該系統運行良好,但我只是質疑這是我應該如何做到這一點?我們有大約9個對象,因此在BaseAPIClient類的頂部有18個文件(.h,.m),所有東西都從中繼承。
我的所有網絡代碼是否應該放在一個文件中,並且每個請求在發出請求之前設置相應的Accept Header?通過加載9個不同的客戶端類而不是加載1個巨型客戶端類,是否會產生巨大的內存開銷?在設計這個系統時,我認爲只有在需要和需要時創建APIClient纔是有利的。如果用戶打開該應用並且從不登錄,那麼我永遠不需要加載負責創建會話的代碼。如果我的所有網絡代碼都塞滿了一個文件,那麼當用戶第一次做任何需要HTTP請求的事情時,所有的網絡代碼都會一次加載到內存中。