我有一个RESTful服务器,在实体具有多个密钥时实现实体的get请求。例如,获取特定国家/地区(耐克,德国)的特定公司的联系信息:
GET: http://hostname/rest/accounts/{company}/{country}
我想添加一项功能,允许客户在一次通话中查询多个公司/国家/地区。由于我在数据库中有数百万条记录,因此我不想返回所有数据。此外,客户可能需要约1000条记录,因此我不希望他进行约1000次通话。
我想在请求正文中添加公司/国家/地区,但是HTTP GET with request body的答案表明这是一个不好的做法。
我无法使用查询字符串参数,因为我需要提供大量信息,大多数服务器都限制了网址的大小。
对于这种情况,什么是一个很好的REST练习?
答案 0 :(得分:1)
有一项针对多请求协议的正式提案 - here(background)。可能是因为它依赖于HTTP / 2来提高效率,目前似乎没有太多动力。
对于少数资源,您可以在URL中指定它们。问题是~2000 characters的事实上的URL限制。虽然它主要适用于IE,但我认为一个好的API应该在浏览器中运行良好,并且由于IE的限制,它可能适用于其他地方。
出于这个原因,我认为你有两个选择。
实际上,您需要使用POST请求,其中正文包含所请求路径的列表,例如作为JSON编码的数组。正如参考文献所暗示的那样,这通常是不好的做法,但在这种情况下,它通常被认为是合理的。实际的缺点是它不可缓存。