我找不到以RESTful方式指定命令的通用方法。考虑一下,我有一个资源想要提供3个命令:
哪种是最RESTful的方式?
POST /resource/disable
POST /resource?command=disable
答案 0 :(得分:-1)
哪种是最RESTful的方式?
您将如何使用网站? REST是万维网的architectural style;如果您能弄清楚如何使用网站,那将为您提供有关如何提供RESTful API的正确思路。
在网络上,通常的答案是我们将拥有 forms 来从客户端收集信息,然后客户端会提交POST
请求(因为我们打算更改资源)。
由于form.action
属性告诉客户端要使用的URI,服务器可以控制URI是什么,如果需要,我们可以稍后对其进行更改。
我们可以按照您的建议为每个命令使用不同的URI。这没有错,但是确实错过了机会。您会发现,REST中的重要思想之一是缓存。 HTTP定义cache invalidation语义;实际的方面是,如果您将/resource
标识符用作表单操作,则成功的POST
请求将自动使客户端的资源本地副本无效。
当然,这确实意味着您实现中的POST
处理程序将必须确定要使用哪个命令-可能是通过查看发布请求正文中包含的信息来确定的; “ commandName”参数或类似参数。