如何将大量输入参数传递给RESTful服务?

时间:2015-09-16 20:14:31

标签: rest asp.net-web-api

我有一个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中获取。

2 个答案:

答案 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