Spring RestController возвращает ошибку как html вместо json

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

Я аннотировал свои классы контроллера с помощью RestController. Недавно я обновил Spring boot, mvc и security до последней версии.

Теперь я вижу, что в моих отрицательных случаях до обновления он возвращал ответ об ошибке 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?

Содержит ли ваша конфигурация mvc конвертер сообщений для JSON?

arseniyandru 19.05.2018 06:10

Не могли бы вы предоставить более подробную информацию, например сообщение об ошибке HTML, ожидаемое сообщение об ошибке JSON и значения RestController.

Prakash Ayappan 19.05.2018 08:46

Обновлено описание с образцами ответов

user3565529 21.05.2018 20:26

У меня нет конфигурации для конвертера сообщений.

user3565529 21.05.2018 20:27

Но у меня есть Джексон в моих библиотеках

user3565529 21.05.2018 20:32

Вы можете поделиться своим кодом?

Supun Dharmarathne 06.06.2018 10:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
8
6
3 593
0

Другие вопросы по теме