Restful API - 处理大量数据

Lee*_*Tee 17 api rest web-services

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

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

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

ton*_*edz 19

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

例如,你可以添加limitoffset参数来获取一小部分.这就是如何根据REST进行分页.这样的请求将导致从21到30日从消息集合中获取10个资源.这样您就可以要求提供大量数据集的特定部分:

myapi.co.uk/messages?limit=10&offset=20 
Run Code Online (Sandbox Code Playgroud)

减少有效负载的另一种方法是仅询问资源表示的某些部分.这是facebook如何做到的:

/joe.smith/friends?fields=id,name,picture
Run Code Online (Sandbox Code Playgroud)

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

我强烈建议apigee 查看关于RESTful API设计演示文稿(截屏视频称为"教狗休息").在那里讨论了处理日常问题的良好做法和巧妙的想法.

编辑:自我发布此答案以来,视频已多次更新,您可以查看2013年1月第3版


red*_*vil 5

通常有多种不同的方法可以提高 API 性能,包括针对大型 API 的性能。这些主题中的每一个都可以深入探讨。

  • 减少大小分页
  • 使用超媒体进行组织
  • 正是用户需要的模式过滤
  • 使用 Prefer 标头定义特定响应
  • 使用缓存做出响应
  • 通过压缩提高效率
  • 用分块响应来解决问题
  • 切换到提供更多流响应
  • 使用 HTTP/2 向前发展

来源:https : //apievangelist.com/2018/04/20/delivering-large-api-responses-as-efficiently-as-possible/