更正JSON提供程序的JAX-RS媒体类型匹配

时间:2016-11-24 17:54:02

标签: json jax-rs resteasy jackson2

官方JSON媒体类型为application/json。 Jackson的RESTEasy提供程序ResteasyJackson2Provider指定了这样的媒体类型:

@Provider
@Consumes({"application/*+json", "text/json"})
@Produces({"application/*+json", "text/json"})
public class ResteasyJackson2Provider extends JacksonJaxbJsonProvider
…

我不明白。我了解"application/*+json"会匹配,例如application/foo+json。但如果没有加application/json符号,它会匹配+吗?这是JAX-RS规范吗?它与我期望通配符的工作方式不一致,除非JAX-RS媒体类型模式匹配对媒体类型子组件语义有一定了解。

1 个答案:

答案 0 :(得分:0)

JAX-RS规范中没有关于媒体类型后缀的内容。每个提供商都按照自己的意愿处理后缀。

我使用3个JAX-RS实现测试我的自定义提供程序(生成application/*+json媒体类型):

  • Jersey(使用Jettison JSON提供商) - 不处理服务生成application/json媒体类型
  • RESTeasy(内部JSON提供程序) - 流程服务生成 application/json媒体类型
  • Apache CFX(内部JSON提供程序) - 进程服务生成 application/json媒体类型(如果 PARTIAL_HIERARCHICAL_MEDIA_SUBTYPE_CHECK属性为true

我的建议 - 如果您想使用不同的JAX-RS实现,请不要信任*+json媒体类型。添加明确的application/json