Как вернуть строку состояния Http с ответом об ошибке? - PullRequest
0 голосов
/ 03 апреля 2019

Я работаю над приложением Spring-Boot. С каждым ответом я хотел бы вернуть http Status-Line, Headers и Body. В соответствии со стандартами строка состояния выглядит следующим образом: HTTP-версия SP Статус-код SP Причина-фраза CRLF. Например: Http / 1.1 400 Bad Request

Я использую ResponseEntity с VnDErrors, но Status-Line не формируется в соответствии со стандартами. Я могу видеть только "Http / 1.1 400". Здесь отсутствует фраза разума.

Я пытался с @ResponseBody с аннотацией @ResponseStatus, но безуспешно для достижения желаемого результата.

Вот фрагмент кода, который я использую:

@ExceptionHandler(HttpRequestMethodNotSupportedException)
    ResponseEntity<VndErrors> httpRequestMethodNotSupportedException(ex) {
        LOGGER.error(ex.message)
        ResponseEntity.status(BAD_REQUEST).contentType(VND_ERROR).body(new 
        VndErrors(BAD_REQUEST, exceptionMessage))
    }

Ожидаемый ответ, который содержит строку состояния: «Http / 1.1 400 Bad Request» Хотите знать, это достижимо? Если да, то как мне поступить так же?

1 Ответ

1 голос
/ 03 апреля 2019

Это стандартное поведение tomcat, см. tomcat-8.5-changelog.html

весна-загрузка проблемно-6789

RFC 7230 утверждает, что клиенты должны игнорировать фразы причины в ответных сообщениях HTTP / 1.1. Поскольку фраза причины является необязательной, Tomcat больше не отправляет ее. В результате системное свойство org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER больше не используется и было удалено. (Markt)

...