我已经编写了自己的 Restful API,并且想知道处理从 API 返回的大量记录的最佳方法。
例如,如果我使用 GET
方法 myapi.co.uk/messages/
这将带回所有消息记录的 XML,在某些情况下可能是 1000 条。这使得使用 API 非常缓慢。
任何人都可以建议处理这个问题的最佳方法吗?批量返回结果并在请求中指定批量大小是否标准?
最佳答案
您可以更改 API 以包含其他参数以限制应用程序返回的数据范围。
例如,您可以添加 limit
和 offset
参数只获取一小部分。这就是按照 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/