我编写了自己的Restful API,并且想知道处理从API返回的大量记录的最佳方法。
例如,如果我使用GET
方法myapi.co.uk/messages/
,这将为所有消息记录带回XML,在某些情况下可能是1000。这使得使用API非常迟缓。
任何人都可以建议处理此问题的最佳方法吗?批量返回结果并在请求中指定批量大小是否标准?
答案 0 :(得分:15)
您可以更改API以包含其他参数,以限制应用程序返回的数据范围。
例如,您可以添加limit
和offset
参数来获取一小部分内容。这就是如何根据REST进行分页。这样的请求将导致从21到30日从消息集合中获取10个资源。通过这种方式,您可以要求提供大量数据集的特定部分:
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
答案 1 :(得分:0)
通常可以通过多种方法来提高API性能,包括针对较大的API大小。每个主题都可以深入探讨。
来源:https://apievangelist.com/2018/04/20/delivering-large-api-responses-as-efficiently-as-possible/
答案 2 :(得分:0)
如果您使用的是.net core 您必须尝试使用此魔术包
Microsoft.AspNetCore.ResponseCompression
然后在启动文件的configureservices中使用此行
services.AddResponseCompression();
然后使用配置功能
app.UseResponseCompression();