Ruby on rails Rails为什么要返回;标题:无“内容”;对于JSON PUT请求?
在我跑步之后Ruby on rails Rails为什么要返回;标题:无“内容”;对于JSON PUT请求?,ruby-on-rails,Ruby On Rails,在我跑步之后 rails生成脚手架用户 Rails 3.2.11中生成的用于更新用户的控制器函数如下所示: def update @user = User.find(params[:id]) respond_to do |format| if @user.update_attributes(params[:user]) format.html { redirect_to @user, notice: 'User was successfully updated.'
rails生成脚手架用户
Rails 3.2.11中生成的用于更新用户的控制器函数如下所示:
def update
@user = User.find(params[:id])
respond_to do |format|
if @user.update_attributes(params[:user])
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
我想知道的是,对于成功的JSON更新请求,返回head:no_content
。我做了一些谷歌搜索,因为我猜这是某种RESTful属性,不返回更新的对象,但我找不到任何声称是这种情况的东西
为什么这是默认值,而不是在更新后返回用户对象的JSON表示形式?好问题,显然目的是返回一个HTTP状态代码200,正文为空,请参阅。可能是为了简洁或安全起见
head:no_content
似乎创建了一个带有空正文的HTTP响应200(成功),返回此响应头:
Status Code:200 OK
另请参见。好问题,我想知道完全相同的事情。我实际上看到
head:no_content
返回一个204 no content,它似乎不会触发ajax:success
事件。如果要显式返回200,请使用head 200
。即使head:ok
在后续请求中也会返回304 not modified。@DamienRoche在GET
请求中,如果资源确实没有被修改,您会希望返回304 not modified
,因为这是HTTP缓存工作所必需的。为确保最佳结果集过期/上次修改的标头和/或etag标头也过期。如果:ok
应该更改,则在后续请求中返回304会让人困惑。。。哪些条件使它成为304?head:ok
似乎总是为我返回200。