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

JAX-RS Jersey-如何强制响应ContentType?覆盖内容协商,jersey,jax-rs,Jersey,Jax Rs,Jersey通过查看accept标头来识别请求。我有一个只接受text/*的请求-如何强制响应为例如application/json @POST @Path("/create") @Produces(MediaType.APPLICATION_JSON) public MyResponseObject create() { return new MyResponseObject(); } 如果请求指向仅接受text/*的create,jersey将返回500。有办法解决这个问题吗?(我

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

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

如果请求指向仅接受text/*的create,jersey将返回500。有办法解决这个问题吗?(我无法更改requests accept标头)。

我通过使用servlet过滤器解决了这个问题:


Jersey还通过属性\u媒体\u类型\u映射支持此功能,您可以在web.xml中配置这些映射,也可以通过Jersey API进行编程,如下所示:

 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后缀来强制内容类型协商