java – JAX-RS / Jersey中vararg数组的路径段序列?

JAX-RS / Jersey允许使用@PathParam注释将URL路径元素转换为Java方法参数.

有没有办法将未知数量的路径元素转换为vararg Java方法的参数? I. e. / foo / bar / x / y / z应该转到方法:foo(@PathParam(…)String [] params){…}其中params [0]是x,params [1]是y和params [2]是z

我可以在Jersey / JAX-RS或一些方便的方式做到这一点吗?

解决方法:

不确定这是否正是您所寻找的,但您可以做这样的事情.

@Path("/foo/bar/{other: .*}
public Response foo(@PathParam("other") VariableStrings vstrings) {
   String[] splitPath = vstrings.getSplitPath();
   ...
}

VariableStrings是您定义的类.

public class VariableStrings {

   private String[] splitPath;

   public VariableStrings(String unparsedPath) {
     splitPath = unparsedPath.split("/");
   }
}

注意,我没有检查过这段代码,因为它只是为了给你一个想法.
这是有效的,因为VariableStrings可以由于它们的构造函数而被注入
只需要一个字符串.

查看docs.

最后,作为使用@PathParam注释注入VariableString的替代方法
您可以将此逻辑包装到您自己的自定义Jersey提供程序中.此提供程序将以与上面相同的方式注入“VariableStrings”,但它看起来可能更清晰一些.不需要PathParam注释.

Coda Hale给出了很好的overview.

上一篇:java – Jersey-请求身份验证


下一篇:java – Jackson JsonParseExceptionMapper和JsonMappingExceptionMapper阴影自定义映射器