Почему 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 пользователя?
Ответы
Ответ 1
Хороший вопрос, видимо, цель - вернуть код статуса HTTP 200 с пустым телом, см. это обсуждение. Возможно, для краткости или для целей безопасности. head :no_content
похоже, создает ответ HTTP 200 (успех) с пустым телом, возвращая этот заголовок ответа:
Status Code:200 OK
см. также этот связанный вопрос.