如何从RESTful API获取所有数据?

问题描述 投票:0回答:3

我用很少的资源实现了一个RESTful API,例如:

/products/
/products/1
/products/2
/categories/
/categories/1
/categories/2
etc.

现在,我被告知该应用程序应该主要离线工作,因此我需要从 API 获取所有数据并将其存储在本地。

由于我不提供单个数据块,但需要调用不同的资源 URI 才能获取所有数据,我想知道这是否会成为问题。

这是如何运作的?会有很多 HTTP 调用还是一次调用就能完成所有事情?

这种情况下最好的方法是什么?

ios json rest caching
3个回答
1
投票

这些端点本身就是端点吗?

/products
/categories

对于那些返回整个集合的人来说,这是一个相当完善的约定。 您甚至可以添加一些请求参数以进行过滤等。


1
投票

每个 URI 代表单一数据。 REST 的主要思想是,我们尝试让 URL 识别资源,然后使用 HTTP 操作 GET、POST、PUT 和删除对他们做一些事情。

因此,例如,使用 AFNetworking,您可以获得该架构的所有优势。 下载模型可能如下所示:

  1. 通过get请求向服务器请求指定的资源
  2. 在后台线程中保存响应
  3. 寻求新的数据和平

当然,如果您没有能力创建新端点,则将下载所有存根,您必须为每个端点单独下载:

/products/
/products/1
/products/2
/categories/
/categories/1
/categories/2

1
投票

以这种方式设置端点将允许您的应用程序的用户检索单个产品/类别或产品/类别列表。

以下是每个 API 端点在被调用时应执行的操作。

/products
- 返回产品列表
/categories
- 返回类别列表
/products/:id
- 返回具有指定 id 的产品
/categories/:id
- 返回具有特定 id 的类别

就允许应用程序大部分离线工作而言。 最好的方法是在客户端(应用程序)端进行一些缓存。 每次第一次调用其中一个端点时,结果都应该存储在客户端的某个位置。 下次发出相同的请求时,之前已经检索过数据,因此不需要进行网络调用,应用程序将离线工作。 但是,第一次通话需要有网络连接才能进行。

这可以通过字典来实现,其中键是请求(/products、/categories/1 等),值是 API 请求返回的结果。 每次发出请求时,您的应用程序应首先检查客户端是否已存在数据。 如果确实如此,则不需要进行网络调用来获取它,只需返回客户端上存在的数据即可。

© www.soinside.com 2019 - 2024. All rights reserved.