web-services - Restful API - 处理大量数据

标签 web-services api rest

我已经编写了自己的 Restful API,并且想知道处理从 API 返回的大量记录的最佳方法。

例如,如果我使用 GET方法 myapi.co.uk/messages/这将带回所有消息记录的 XML,在某些情况下可能是 1000 条。这使得使用 API 非常缓慢。

任何人都可以建议处理这个问题的最佳方法吗?批量返回结果并在请求中指定批量大小是否标准?

最佳答案

您可以更改 API 以包含其他参数以限制应用程序返回的数据范围。

例如,您可以添加 limitoffset参数只获取一小部分。这就是按照 REST 进行分页的方式。像这样的请求将导致从消息集合中获取 10 个资源,从 21 日到 30 日。通过这种方式,您可以请求庞大数据集的特定部分:

myapi.co.uk/messages?limit=10&offset=20 

减少有效负载的另一种方法是仅请求资源表示的某些部分。以下是 Facebook 的做法:
/joe.smith/friends?fields=id,name,picture

请记住,在使用这些方法中的任何一种时,您必须为客户端提供一种发现每个资源的方法。您不能假设他们只会查看参数并开始更改它们以搜索数据。这将违反 REST 范式。为他们提供必要的超链接以避免它。

我强烈建议查看 this presentation on RESTful API design来自 apigee (截屏视频称为“教一只狗休息”)。那里讨论了解决日常问题的良好做法和巧妙想法。

编辑:自从我发布此答案以来,该视频已更新多次,您可以查看 3rd edition from January 2013

关于web-services - Restful API - 处理大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11725078/

相关文章:

java - 使用 jaxb 解码生成的 Axis (包含多引用)soap 响应

java - 多端点 dagger2 改造

api - 在Flutter应用程序中使用Dart的400错误请求尝试连接到FileMaker Database

java - 您如何在 JavaServer Faces 中执行分页列表?

java - 从 Web 服务获取多个响应

python - 使用 GitHub API 检查用户是否存在

java - 将 Retrofit 与 Imgur 的 API 结合使用

iphone - iPhone 应用程序的 POST REST-Web 服务调用

c++ - 无法打开包含文件 : 'cpprest/http_client.h'

java - 应该在哪一层进行验证?