我的服务器/ registered_contacts上有一条路由,它将一长串id作为参数,查找哪些ID在数据库中注册,然后返回该子集。
这应该是哪种HTTP方法?
这是一个GET请求,因为我认为它是GET的东西,但随后我对一长串的id也有点不安,最终向端点发出请求,如:
www.server.com/registered_contacts?ids[2]=bob&ids[54]=jon&ids[23]=jack...etc. etc.
有人可能会说我实际上并没有得到像/ registered / contacts / 42这样的远程“东西”,人们也可以说它是一种我既不更新,删除或创建的资源......所以离开了?
(有一点担心我还有一个标题大于数据包大小,不确定这是否成为一个问题)
答案 0 :(得分:4)
假设您没有运行某些确实存在的GET命令长度限制,那么您没问题。
另一种机制是采用您的标准,将其发布到“过滤器”资源,然后从中获取生成的URI,然后使用该URI作为GET的参数。
Create the filter:
POST /filter
ids[2]=bob......
Result:
HTTP/1.1 301 Moved Permanently
Location: /filter/1234
Use the filter:
GET /registerd_contacts?filter=http://example.com/filter/1234
您的过滤器是一流的资源,如果您愿意,您可以CRUD,或者他们可以在一天内“离开”或任何您想要的。
答案 1 :(得分:2)
不,GET是正确的方法。您实质上是基于一长串标准生成搜索结果。你的方法(从语义上讲)是幂等的,这就是为什么它不适合POST。