Переопределить сообщение с кодом статуса 204 - PullRequest
0 голосов
/ 03 ноября 2011

Когда мы получаем ответ без содержимого как 204, он приходит с сообщением «Нет содержимого» и отображает ответ

      Response : #<Net::HTTPNoContent 204 No Content  readbody=true>

, в то время как я хочу получить ответ типа:

 <response>
   <request_id>4ccf18f0-e83d-012e-29f7-042b2b8686e6</request_id>
   <status_code>204</status_code>
   <message>No Offers were found</message>
</response>

Могу ли я переопределить сообщение по умолчанию об ошибке 204. Метод, вызываемый для создания ответа.

def generate_success_response_without_data(format, request_id, message)
  status_code = 204
  format_type_method, options_hash, content_type = get_format_method(format)
  data = {
    "request_id" => request_id,
    "status_code" => status_code,
    "message" => message
  }
  data = generate_data_format(format, data)
  resp = [status_code, {"Content-Type" => content_type}, data.send(format_type_method, options_hash)]
  # Convert rack response to action controller response           
  generate_active_controller_response_format(resp)
  resp
end

РЕДАКТИРОВАТЬ: Как указано в http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Ответ 204 НЕ ДОЛЖЕНвключает тело сообщения и поэтому всегда заканчивается первой пустой строкой после полей заголовка.

Можем ли мы как-то взломать и показать тело сообщения

1 Ответ

1 голос
/ 03 ноября 2011

HTTP 204 НЕ является ошибкой.204 используется, когда ответ был успешным, а тело контента намеренно пусто .

От: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Сервер выполнил запрос, но не нуждаетсячтобы вернуть тело-сущность, и может захотеть вернуть обновленную метаинформацию.Ответ МОЖЕТ включать новую или обновленную метаинформацию в форме заголовков объекта, которые, если они присутствуют, ДОЛЖНЫ быть связаны с запрошенным вариантом.

Если клиент является агентом пользователя, он НЕ ДОЛЖЕН изменять свой вид документа с этогочто вызвало отправку запроса.Этот ответ в первую очередь предназначен для того, чтобы разрешить ввод для действий, не вызывая изменений в активном представлении документа пользовательского агента, хотя любую новую или обновленную метаинформацию СЛЕДУЕТ применять к документу, который в данный момент находится в активном представлении пользовательского агента.

Ответ 204 НЕ ДОЛЖЕН содержать тело сообщения и поэтому всегда заканчивается первой пустой строкой после полей заголовка.

В этой конкретной ситуации 404 выглядит более подходящим.

Подробнее здесь: http://benramsey.com/archives/http-status-204-no-content-and-205-reset-content/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...