JAX-RS/Jersey 允许使用以下方法将 URL 路径元素转换为 Java 方法参数@PathParam
注释。
有没有办法将未知数量的路径元素转换为 vararg Java 方法的参数? I. e. /foo/bar/x/y/z
应该转到方法:foo(@PathParam(...) String [] params) { ... }
where params[0]
is x
, params[1]
is y
and params[2]
is 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 Provider 中。该提供程序将或多或少以与上面相同的方式注入“VariableStrings”,但它可能看起来更干净一些。不需要 PathParam 注释。
Coda Hale 给出了一个很好的overview.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)