jersey - JAX-RS Jersey - 如何强制响应 ContentType?覆盖内容协商

标签 jersey jax-rs

Jersey 通过查看接受 header 来识别请求。我有一个只接受 text/* 的请求 - 我如何强制响应为例如 application/json?

@POST
@Path("/create")
@Produces(MediaType.APPLICATION_JSON)
public MyResponseObject create() {
    return new MyResponseObject();
}

如果请求被定向到只接受文本/* jersey 的创建将返回 500。有没有办法解决这个问题? (我无法更改请求接受 header )。

最佳答案

Jersey 也通过 ResourceConfig 支持此功能您可以在 web.xml 中或通过 Jersey API 以编程方式配置的属性 PROPERTY_MEDIA_TYPE_MAPPINGS,如下所示:

 DefaultResourceConfig rc = new DefaultResourceConfig(MyResource.class);
 rc.getMediaTypeMappings().put("json", MediaType.APPLICATION_JSON_TYPE);
 rc.getMediaTypeMappings().put("xml", MediaType.APPLICATION_XML_TYPE);
 SimpleServerFactory.create("http://localhost:9090", rc);

您可以通过在 URL 中添加 .json 或 .xml 后缀来强制进行内容类型协商。

关于jersey - JAX-RS Jersey - 如何强制响应 ContentType?覆盖内容协商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3677064/

相关文章:

java - Jersey 异步 ContainerRequestFilter

java - 使用 Jersey 2.0,如何为每个请求注册一个可绑定(bind)实例?

java - 将 JAX-RS 1.1 升级到 JAX-RS 2.0 需要有关 web.xml 部署的帮助

java - 界面中的 JAX-RS 验证消息

java - 首先是 InjectableProvider 还是 ExceptionMapper?

java - DropWizard/Jersey API 客户端

java - JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 9 + maven = 404 未找到,但 JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 8 + maven 有效

jersey - 返回 JSONArray 而不是 JSONObject, Jersey JAX-RS

rest - 在 JAX-RS 过滤器中捕获响应负载

java - Jersey ExceptionMapper,依赖另一个ExceptionMapper