我们正在使用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请求的事情时,所有的网络代码都会一次加载到内存中。