iOS获取请求的最佳做法

时间:2014-03-31 23:15:01

标签: ios objective-c json afnetworking

我已经为AFHTTPSessionManager提交了子请求。我有一个用于解析传入的JSON的模型类。

我应该在哪里进行获取请求?在我的模型中,ViewController还是应该为请求使用包装器?

在这种情况下哪些是最佳做法?

1 个答案:

答案 0 :(得分:2)

我在开始我的项目之前遇到过同样的问题。我是这样做的:

使用AFNetworking完成所有获取/放置HTTP请求的

Base ClassWeb service class对基类一无所知 - 只是如何使用它,我在这个意义上使方法通用。 Data class构造了我请求所需的url /参数。

通过这种方式,应用程序的其余部分对网络层一无所知。数据类知道如何将URL / Parameters放在一起并请求网络调用。而已。 Web服务类知道如何根据提供给它的信息进行调用,从数据类和基类知道如何发出请求,获得响应。

然后我将响应交给基础XML / JSON类,该类开始解析从基本Web服务类返回的数据。一旦数据被解析,它就被存储到数据类中,使用所需的正确模型对象。从那里 - 应用程序只询问数据类的数据。

通过这种方法,应用程序的顶层知道如何请求数据并将其取回。它对该过程的内部工作一无所知。这意味着,在将来,如果我决定更改为不同的网络库,我只需要修改一个类而不是一大堆代码。

在一个坚果壳里,我像这样构造它:

  • ViewController类或其他一些类要求Data class
  • 中的数据
  • Data Class然后构造请求所需的URL和参数
  • Webservice classData Class获取了网址和参数,并将其放入请求中,然后将其发送到基本Web服务类
  • Base webservice class然后拨打完整的网址。它处理响应,如果它成功,它将它放入一个NSData对象 - 然后传递给XML / JSON类
  • XML / JSOn类知道如何处理数据对象并开始解析。完成后,它会将其返回到作为自定义NSObject存储的Data class

一旦完成了原始调用的类已经通知http请求和解析已经完成,它就会向`Data class'询问该数据。

这种分类和他们的责任,很好地解释了我上面提到的原因。更改应用程序的一部分,不需要大量重写许多类。两个,大多数。

我希望这会让你朝着正确的方向前进。