У меня есть класс обработчика исключений API, который включает следующие два метода:
@ExceptionHandler(HttpMediaTypeNotAcceptableException.class)
public void handleHttpMediaTypeNotAcceptableException(
HttpMediaTypeNotAcceptableException ex, HttpServletResponse response) throws IOException
{
LOG.error("Not acceptable response: " + ex.getMessage(), ex);
response.setStatus(HttpServletResponse.SC_NOT_ACCEPTABLE);
writeError(response, RESPONSE_CODES.NOT_ACCEPTABLE);
}
@ExceptionHandler(HttpMediaTypeNotSupportedException.class)
public void handleHttpMediaTypeNotSupportedException(
HttpMediaTypeNotSupportedException ex, HttpServletResponse response) throws IOException
{
LOG.error("Unsupported media type: " + ex.getMessage(), ex);
response.setStatus(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE);
writeError(response, RESPONSE_CODES.UNSUPPORTED_MEDIA);
}
Но когда запрос выполняется с использованием недопустимого заголовка Accept
и действительного заголовка Content-Type
, код ответа является 415 (неподдерживаемый тип носителя), когда это должно быть 406 (недопустимый ответ). Как я могу различить guish эти, чтобы соответствующие исключения использовали правильные обработчики?