我们有一个产品资源集合:/products
。
我们希望过滤此集合,仅返回具有特定class
id
' s列表之一的成员。例如:
GET /products?classes=100,101,102
这应返回列出任何类的产品成员集合。
我们遇到的问题是,我们正在处理数以千计的产品和类,因此id
的类列表可能会长达数千个 - 对于查询字符串来说太长了。
我希望尽可能坚持使用RESTful原则,因此我喜欢使用/products?classes=100,101,102
调用资源GET
时返回过滤后的产品集合。
显然,我们可以在JSON格式的主体中包含id
列表,但这意味着调用GET /products
不会返回状态的表示资源(资源是URL),因为正在使用正文提供过滤器选项。
请求过滤的集合的最佳方法是什么,但过滤器选项太长而无法使用查询字符串..?
答案 0 :(得分:0)
来自@C的有趣评论。史密斯建议使用设置为POST
的{{1}}标头并在正文中传递X-HTTP-Method-Override
来进行GET
来电。这样可行。
在考虑之后我们可能会限制查询字符串中允许的类id
的数量,并建议进行多次调用,将id
列表分解为,200个组。提交超过200个将返回错误。
id
(限于200 GET /products?classes=1004,2342,8753...
)
id
(限于200 GET /products?classes=2326,3343,6981...
)
然后可以很容易地将结果拼接在一起。
这种方法可以让你使用5,000 id
来做25次调用,这虽然不理想,但对我们的用例来说还是可以的。