JAX-RS:如何使用查询参数而不是Accept标头定义响应类型?

时间:2013-03-04 19:45:17

标签: rest jersey jax-rs restlet resteasy

在JAX-RS中,有没有办法使用查询参数而不是Accept标头定义响应类型(例如/api/foo?format=json)?

3 个答案:

答案 0 :(得分:4)

在JAX-RS中有三种方式进行内容协商:基于URL,基于Accept标头和基于请求参数。请查看链接Content Negotiation Based on Request Parameter。它包含如何对请求参数进行内容协商的示例代码。该链接适用于Apache Wink项目,但代码应该在Jersey实现中有效。

答案 1 :(得分:1)

我不知道基于查询参数执行此操作的内置方法,但UriConnegFilter支持使用URI后缀的建议方法,如/api/foo.json。也许你可以遵守那个惯例?如果没有,UriConnegFilter将是建立自己支持使用查询参数的良好起点。

答案 2 :(得分:0)

在这种情况下,您需要在web.xml中启用一个开关,如下所示

   <context-param>
    <param-name>resteasy.media.type.param.mapping</param-name>
    <param-value>format</param-value>
   </context-param>

/ API /富?格式= JSON