【问题标题】:Optional @PathParam in Jax-RS for format .json .xmlJax-RS 中的可选 @PathParam 格式为 .json .xml
【发布时间】:2014-10-27 12:07:46
【问题描述】:

我有一个使用 Jersey 的 Java 服务,现在我想将以下三个 URL 映射到一个方法,以便如果任何函数具有 .json.xml 如果没有扩展名(格式),则相应地转换输出提供则默认返回为 json

以下代码工作正常,但如果不指定 .xml 或 .json url 则找不到

/api/getData       (result is json)
/api/getData.json  (result is json) 
/api/getData.xml   (result is xml)

请注意,我无法将其更改为

/api/getData/xml
/api/getData/json

我希望他们成为functionName.format

@POST
        @Path("/getData{format}")
        @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
        public Response getData(
                    @FormParam("token") String token, 
                    @PathParam("format") String format, 
                    @Context HttpServletRequest context) {
    ....
}

【问题讨论】:

    标签: xml json jersey jax-rs path-parameter


    【解决方案1】:

    您需要添加一个通配符来支持使用单个资源的非扩展请求,例如:

    {[pathParamName]:([allowedEndings])[wildcardSign]} -> {ext:(.json|.xml)*}

    例子:

    @GET
    @Path("foo/{bar}{ext:(.json|.xml)*}")
    @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
    public synchronized Response getEvents(@PathParam("bar") String bar, @PathParam("ext") String ext) {
        if("".equals(ext))
            ext = ".json";
        System.out.println(bar);
        System.out.println(ext);
        // ...
        return null;
    }
    

    祝你有美好的一天......

    【讨论】:

      猜你喜欢
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2013-02-06
      相关资源
      最近更新 更多