В моем весеннем загрузочном приложении у меня есть контроллер для пост-запроса, который создает и потребляет JSON запрос, и я определил @ExceptionHandler для этого контроллера с HttpMediaTypeNotAcceptableException для перехвата исключений HttpMediaTypeNotAcceptableException (406 кода состояния).
Теперь, когда я вызываю запрос на публикацию с неправильным заголовком ACCEPT, таким как application / pdf, определенное исключение не вызывается.
Я не хочу определять ControllerAdvice, так как я хотел бы бросить определенное c ошибка для этого контроллера.
код:
@RestController
@RequestMapping("/school")
public class SchoolCotroller {
@Autowired
private SchoolService schoolService;
@PostMapping(produces = "Application/Json", consumes = "Application/Json")
@ResponseStatus(HttpStatus.CREATED)
public School postData(@Valid @RequestBody School school) {
return schoolService.save(school);
}
@ExceptionHandler(HttpMediaTypeNotAcceptableException.class)
String handleMediaTypeNotAcceptable(
final HttpMediaTypeNotAcceptableException exception,
final NativeWebRequest request) {
return "acceptable MIME type:" + MediaType.APPLICATION_JSON_VALUE;
}
}
curl:
curl --location --request POST 'http://localhost:8080/school' \
--header 'Accept: application/pdf' \
--header 'Content-Type: application/json' \
--data-raw '{
"studentName":"mayank",
"course":1,
"teacher":"e",
"id":1
}'
Таким образом, всякий раз, когда я вызываю этот запрос Curl, я получаю ответ по умолчанию о неверном запросе с Журнал консоли отображается как «DefaultHandlerExceptionResolver: Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: Не удалось найти приемлемое представление]», но он не вызывает метод ExceptionHandler.
Почему он не вызывает требуемый метод ExceptionHandler?