Подтвердить что ты не робот

Почему Rails хочет вернуть "head: no_content" для запросов JSON PUT?

После запуска rails generate scaffold User
Сгенерированная функция контроллера в 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

Мне интересна строка, возвращающая head :no_content для успешного запроса на обновление JSON. Я сделал несколько поисковых запросов, так как я предполагал, что это своего рода свойство RESTful, чтобы не возвращать обновленный объект, но я не мог найти ничего, что утверждало, что это так.

Почему это значение по умолчанию, по сравнению с возвратом представления JSON объекта Post-update пользователя?

4b9b3361

Ответ 1

Хороший вопрос, видимо, цель - вернуть код статуса HTTP 200 с пустым телом, см. это обсуждение. Возможно, для краткости или для целей безопасности. head :no_content похоже, создает ответ HTTP 200 (успех) с пустым телом, возвращая этот заголовок ответа:

Status Code:200 OK

см. также этот связанный вопрос.