MediaTypeNotAcceptable с SpringBoot RestController

У меня есть контроллер отдыха с GetMapping, который производит тип мультимедиа «Plain_text». Когда в базовой службе возникает исключение, оно обрабатывается советом контроллера, а совет контроллера возвращает объект, который будет сериализован в JSON.

На счастливом пути, когда служба не генерирует никаких исключений, я получаю правильный ответ. Но в случае сценариев ошибок я получаю исключение с ошибкой «Не удалось найти приемлемое представление». Если я удалил тег «производит», контроллер работает нормально.

Есть ли способ при весенней загрузке, чтобы api возвращал простой текстовый тип носителя и в случае ошибок возвращал ответ Json?

Вот мой код:

@RestController
@RequestMapping("/sample")
public class SampleController() {

   @Autowired
   SampleService service;

   @GetMapping(produces = MediaType.TEXT_PLAIN)
   public String getString(){
      return service.getString();
   }

}

КонтроллерСовет:

@RestControllerAdvice
public class SampleControllerAdvice(){

    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler({SampleNotFoundException.class})
    public SampleErrorResponse handleException(Exception ex) {
        return new SampleErrorResponse(e.getMessage());
    }

}

Прежде всего, можете ли вы указать параметры своего метода в своем controllerAdive ((HttpServletRequest req, SampleNotFoundException ex)), а не Exception ex, во-вторых, думаете, что вам действительно нужен text_plain? Третий момент, как вы проверяете метод отдыха?

TinyOS 09.12.2018 06:21
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
1
126
1

Ответы 1

Это похоже на SPR-16318, который был исправлен в Spring Framework 5.1 - это версия, используемая в Spring Boot 2.1.

Вам следует перейти на Spring Boot 2.1+, чтобы исправить это в своем приложении.

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