MediaTypeNotПрименимо с SpringBoot RestController - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть контроллер покоя с 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();
   }

}

ControllerAdvice:

@RestControllerAdvice
public class SampleControllerAdvice(){

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

}

1 Ответ

0 голосов
/ 09 декабря 2018

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

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

...