我使用Jersey
在Java中提供服务,现在我想将以下三个网址映射到一个方法,这样如果任何函数有.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) {
....
}
答案 0 :(得分:2)
您需要添加通配符以支持使用单个资源的非扩展请求,例如:
{[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;
}
祝你有愉快的一天......