2

官方 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 媒体类型模式匹配对媒体类型子组件语义有一些了解。

4

1 回答 1

0

JAX-RS 规范中没有关于媒体类型后缀的内容。每个提供者都可以随意处理后缀。

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

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

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

于 2016-11-27T22:57:46.633 回答