Spring RestController возвращает ошибку в формате html вместо json - PullRequest
0 голосов
/ 19 мая 2018

У меня есть веб-приложение с весенней загрузкой, в котором я определил API REST.Я использую Spring Security для безопасности REST API.

Я аннотировал классы моего контроллера с помощью RestController.Я недавно обновил весеннюю загрузку, mvc и безопасность до последней версии.

Теперь я вижу, что в моих отрицательных случаях до обновления он возвращал ответ об ошибке json, но теперь после обновления он возвращает ответ об ошибке html.

Перед обновлением онвыдает следующее сообщение об ошибке -

{
  "timestamp": "2018-05-21T18:22:37.105+0000",
  "status": 500,
  "error": "Internal Server Error",
  "message": "Error message.",
  "path": "<API path>"
}

После обновления оно выдает следующий ответ:

<!DOCTYPE html>
<html>
    <head>
        <title>Apache Tomcat/8.0.51 - Error report</title>
        <style type="text/css">H1 {font-family:Tahoma,Arial,sansserif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style>
    </head>
    <body>
        <h1>HTTP Status 500 - Error message.</h1>
        <div class="line"></div>
        <p>
            <b>type</b> Status report
        </p>
        <p>
            <b>message</b>
            <u>Error message.</u>
        </p>
        <p>
            <b>description</b>
            <u>The server encountered an internal error that prevented it from fulfilling this request.</u>
        </p>
        <hr class="line">
        <h3>Apache Tomcat/8.0.51</h3>
    </body>
</html>

У меня не было никакого ExceptionHandler в моем контроллере.По умолчанию это было ошибкой json.У меня в библиотеках есть jackson и jackson-mapper-asl.

Я не мог понять, есть ли где-то настройка по умолчанию, которую нужно изменить, чтобы отправлять ошибки как json.

Я такжепопытался отключить ErrorPageFilter, но даже после этого я получаю HTML-ответ.

Есть ли способ получить ответ json вместо html?

1 Ответ

0 голосов
/ 10 сентября 2018

Spring помогает согласовывать содержимое, используя заголовок HTTP-запроса Accept.

Если @RestController отправляет html-страницу с ошибкой, которую ваш клиент, вероятно, попросил об этом.Обязательно отправьте заголовок Accept: application/json с вашим запросом, если вы хотите получить JSON вместо HTML-ответа.

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