24

実行し
rails generate scaffold User
た後、ユーザーを更新するためにRails3.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

私が興味を持っている行はhead :no_content、JSON更新要求が成功した場合に返されます。更新されたオブジェクトを返さないために、これはある種のRESTfulプロパティであると推測していたので、グーグルを実行しましたが、それが当てはまると主張するものは見つかりませんでした。

更新後にUserオブジェクトのJSON表現を返すのに対して、これがデフォルトであるのはなぜですか?

4

1 に答える 1

19

良い質問です。明らかに目的は、空の本文で HTTP ステータス コード 200 を返すことです。このディスカッションを参照してください。簡潔にするためか、セキュリティ上の理由からかもしれません。head :no_content本文が空の HTTP 応答 200 (成功) を作成し、次の応答ヘッダーを返すようです。

Status Code:200 OK

この関連する質問も参照してください。

于 2013-03-28T12:00:05.773 に答える