开发者社区> 问答> 正文

春天如何解析http accept标头?

我想在Spring中解析HTTP接受标头,以确定是否可以发回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/jsonI时,我将遇到异常

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)

该代码正在Servlet过滤器中使用,因此我不能依赖SpringMVC注释。

Spring是否有一种解析接受标头并确定它是否与特定媒体类型兼容的方法?

问题来源:Stack Overflow

展开
收起
montos 2020-03-23 21:31:43 593 0
1 条回答
写回答
取消 提交回答
  • Spring本身在内部完全像您一样(即从请求中获取ACCEPT标头),但是它们将其提供给此调用:

    MediaType.parseMediaTypes(get(ACCEPT));

    它将为您返回您List 需要处理的内容。

    回答来源:Stack Overflow

    2020-03-23 21:32:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像