我已经实现了一个资源很少的RESTful API,例如:
/products/
/products/1
/products/2
/categories/
/categories/1
/categories/2
etc.
现在,我被告知应用程序主要应该脱机工作,因此我需要从API获取所有数据并将其存储在本地。
由于我没有提供单个数据块,但是为了获取所有数据需要调用不同的资源URI,我想知道这是否是一个问题。
这是如何工作的?会有很多HTTP电话或一个电话会做什么吗?
在这种情况下,最好的方法是什么?
答案 0 :(得分:1)
这些端点本身就是吗?
/products
/categories
对于那些返回整个系列的人而言,这是一个非常完善的惯例。您甚至可以添加一些请求参数以进行过滤等。
答案 1 :(得分:1)
每个URI代表单一的数据和平。 REST的主要思想,而不是随机命名的setter和getter URL,并为所有setter使用GET和所有setter的POST,我们尝试让URL识别资源,然后使用HTTP动作GET,POST,PUT和删除给他们做的东西。
因此,使用AFNetworking,您可以获得此架构的所有好处。 下载模型可能如下所示:
- 通过get request向服务器询问指定的资源
- 在后台线程中保存响应
- 要求新的数据和平
醇>
当然,如果您无法创建新端点,那么将下载所有存根,您必须为每个端点单独下载:
/products/
/products/1
/products/2
/categories/
/categories/1
/categories/2
答案 2 :(得分:1)
以这种方式设置端点将允许您的应用的用户检索单个产品/类别或产品/类别列表。
以下是每个API端点在调用时应该执行的操作。
/products
- 返回产品清单
/categories
- 返回类别列表
/products/:id
- 返回具有指定ID的产品
/categories/:id
- 返回具有特定ID
允许应用程序主要脱机工作。最好的方法是在客户端(app)端进行一些缓存。每次第一次对这些端点之一进行调用时,结果应存储在客户端的某个位置。下次发出相同请求时,之前已经检索过数据,因此不需要进行网络呼叫,应用程序将脱机工作。但是,第一次呼叫需要建立网络连接。
这可以使用字典来实现,其中键是请求(/ products,/ categories / 1等),值是从API请求返回的结果。每次发出请求时,您的应用应首先检查客户端是否已存在数据。如果是这样,它不需要进行网络调用就可以获得它,并且只能返回在cleint上出现的数据。