Как разобрать заголовок http accept весной? - PullRequest
0 голосов
/ 15 марта 2020

Я хочу разобрать заголовок HTTP accept в Spring, чтобы определить, могу ли я отправить обратно JSON. Я пытаюсь с помощью следующего кода.

class MediaTypeUtil {
  private final static Logger logger = LoggerFactory.getLogger(MediaTypeUtil.class);
  static boolean acceptsJson(HttpServletRequest request) {
    try {
      String accept = request.getHeader("Accept");
      MediaType requestType = MediaType.valueOf(accept);
      return MediaType.APPLICATION_JSON.isCompatibleWith(requestType);
    } catch (InvalidMediaTypeException e) {
      logger.debug("MediaType parsing error",e);
      return false;
    }
  }
}

Когда приходит запрос со значением заголовка подтверждения application/json, application/javascript, text/javascript, text/json Я получаю исключение

Caused by: org.springframework.util.InvalidMimeTypeException: Invalid mime type "application/json, application/javascript, text/javascript, text/json": Invalid token character ',' in token "json, application/javascript, text/javascript, text/json"
    at org.springframework.util.MimeTypeUtils.parseMimeTypeInternal(MimeTypeUtils.java:262)

Этот код используется из фильтр сервлетов, поэтому я не могу полагаться на аннотации Spring MVC.

Есть ли у Spring метод для анализа заголовка приема и определения, совместим ли он с указанным c типом носителя?

1 Ответ

1 голос
/ 15 марта 2020

Spring сам делает это точно так же, как вы сами (т.е. получает заголовок ACCEPT из запроса), но они подают его на этот вызов:

MediaType.parseMediaTypes(get(ACCEPT));

, который вернет вам List<MediaType>, что вам нужно работать с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...