我有一个RESTful服务,它通过提供的ID列表返回有关机器的详细数据。获取api / machine /
http://service.com/api/machine/1,2,3,4
到目前为止,这一直很好,因为我一次只能获得少量机器,但现在我需要获得所有机器(超过1000台)。这超过了URL的2000个字符限制。
我已经得到了以下两个选项,我正在寻找一些社区反馈意见。
选项1:拆分我的GET。使用id子集进行多次调用。优点:我正在努力使用HTTP动词GET是有意义的。缺点:如果新服务的人不知道此限制,或者不使用我的客户,则会导致问题。
选项2:添加PUT / POST方法并在正文中包含完整的ID列表。优点:进行1次调用以获取所有数据。缺点:我现在正在从PUT / POST中获取。
答案 0 :(得分:2)
可能你最好的行动方案就是选项2的内容,你可以在你身边创建一个JSON,你想要在消息正文中发送一系列数字。如果有可能它仍然太大,你可以将它分成几条消息,当你收到一个你要发送队列中下一个项目的响应时,依此类推。
答案 1 :(得分:0)
Facebook API和其他用户使用的另一个选项是创建一个“/ batch”POST方法,可以一次性发出多个请求。
所以不要使用http://service.com/api/machine/1,2,3,4,5,....你将拥有/ machine / 1,/ machine / 2,/ machine / 3等一批请求。
优势在于您可以保持干净的RESTful URL(不再是以逗号分隔的值)并且可以很好地扩展,因为您可以根据需要批量处理任意数量的请求。
缺点是构建起来稍微复杂一些。
有关详细信息,请参阅此处 - https://developers.facebook.com/docs/graph-api/making-multiple-requests