ruby-on-rails – 为什么使用HTTP PUT和DELETE方法而不是POST?

new_story GET     /story/new(.:format)  {:action=>"new", :controller=>"stories"}
edit_story GET     /story/edit(.:format) {:action=>"edit", :controller=>"stories"}
     story GET     /story(.:format)      {:action=>"show", :controller=>"stories"}
           PUT     /story(.:format)      {:action=>"update", :controller=>"stories"}
           DELETE  /story(.:format)      {:action=>"destroy", :controller=>"stories"}
           POST    /story(.:format)      {:action=>"create", :controller=>"stories"}

在网络工作中,我已经完成了其他技术,我只使用了GET和POST方法。但是使用Rails中的RESTful路由,默认情况下,PUT和DELETE方法用于更新和销毁操作。使用PUT和DELETE有什么优势或需要?我认为这些方法只是另一种做POST的方法 – 但是为什么不坚持使用POST?

最佳答案
优势主要是语义,也可以在一定程度上简化网址。不同的HTTP方法映射到不同的操作:

POST   => create a new object
DELETE => delete an object
PUT    => modify an object
GET    => view an object

那么理论上你可以使用相同的URL,但是可以使用不同的方法进行交互;用于访问资源的方法定义了实际的操作类型。

实际上,大多数浏览器只支持HTTP GET和POST。 Rails在HTML表单中使用一些“诡计”,就像发送PUT或DELETE请求一样,即使Rails仍然使用GET或POST进行这些方法。 (这就解释了为什么你可能没有在其他平台上使用DELETE或PUT。)

转载注明原文:ruby-on-rails – 为什么使用HTTP PUT和DELETE方法而不是POST? - 代码日志