Rails Put vs Post

14 浏览
0 Comments

Rails Put vs Post

我一直在阅读有关put和post请求之间的区别,并且我有一些与Rails有关的问题:我想更改已经创建的一行中的一个特定字段...我应该使用put请求还是post请求?例如,以下两者是否不同?

#Assume this is a put request
def update
    @model=Model.find(x)
    @model.field="new_field"
    @model.save
end
#Assume this is a post request
def update
    @model=Model.find(x)
    @model.field="new_field"
    @model.save
end
#What if I use the rails update method?
def update
    @model=Model.find(x)
    @model.update(model_params)
    @model.save
end

提前感谢。

admin 更改状态以发布 2023年5月22日
0
0 Comments

Rails默认采用REST规范中的HTTP动词,您不应担心这些方法允许您执行相同的操作的原因。相反,您应该考虑提供一个符合RESTful原则且用户能够理解的API。这些默认行为可以被覆盖。

REST表示:

使用POST方法的请求应该作用于资源集合;向集合中添加新资源。
示例URL:http://example.com/resources

使用PUT HTTP动词的请求应该作用于集合中的单个资源;在服务器上完整替换资源。
示例URL:http://example.com/resource/1

使用PATCH HTTP动词的请求应该作用于集合中的单个资源;在资源所在位置更新某些属性。
示例URL:http://example.com/resource/1

Rails 4现在使用PATCH动词来更新资源,而不是PUT动词。

0
0 Comments

根据Rails的惯例,

PUT用于更新现有的资源

POST用于创建新的资源

在Rails 4中,PUT已经改为PATCH以避免混淆。

默认情况下,Rails生成的路由如下所示:

    posts GET    /posts(.:format)                            {:action=>"index", :controller=>"posts"}
          POST   /posts(.:format)                            {:action=>"create", :controller=>"posts"}
 new_post GET    /posts/new(.:format)                        {:action=>"new", :controller=>"posts"}
edit_post GET    /posts/:id/edit(.:format)                   {:action=>"edit", :controller=>"posts"}
     post GET    /posts/:id(.:format)                        {:action=>"show", :controller=>"posts"}
          PUT    /posts/:id(.:format)                        {:action=>"update", :controller=>"posts"}
          DELETE /posts/:id(.:format)                        {:action=>"destroy", :controller=>"posts"}

请注意PUT和POST的操作。

0