REST使用多键获取多个值

时间:2015-05-14 08:33:37

标签: rest

我有一个RESTful服务器,在实体具有多个密钥时实现实体的get请求。例如,获取特定国家/地区(耐克,德国)的特定公司的联系信息:

GET: http://hostname/rest/accounts/{company}/{country}

我想添加一项功能,允许客户在一次通话中查询多个公司/国家/地区。由于我在数据库中有数百万条记录,因此我不想返回所有数据。此外,客户可能需要约1000条记录,因此我不希望他进行约1000次通话。

我想在请求正文中添加公司/国家/地区,但是HTTP GET with request body的答案表明这是一个不好的做法。

我无法使用查询字符串参数,因为我需要提供大量信息,大多数服务器都限制了网址的大小。

对于这种情况,什么是一个很好的REST练习?

1 个答案:

答案 0 :(得分:1)

有一项针对多请求协议的正式提案 - herebackground)。可能是因为它依赖于HTTP / 2来提高效率,目前似乎没有太多动力。

对于少数资源,您可以在URL中指定它们。问题是~2000 characters的事实上的URL限制。虽然它主要适用于IE,但我认为一个好的API应该在浏览器中运行良好,并且由于IE的限制,它可能适用于其他地方。

出于这个原因,我认为你有两个选择。

实际上,您需要使用POST请求,其中正文包含所请求路径的列表,例如作为JSON编码的数组。正如参考文献所暗示的那样,这通常是不好的做法,但在这种情况下,它通常被认为是合理的。实际的缺点是它不可缓存。