nec*_*cer 5 java rest jax-rs jersey jakarta-ee
JAX-RS/Jersey 允许使用注释将 URL 路径元素转换为 Java 方法参数@PathParam
。
有没有办法将未知数量的路径元素转换为 vararg Java 方法的参数? IE。/foo/bar/x/y/z
应该转到方法:foo(@PathParam(...) String [] params) { ... }
哪里params[0]
is x
、params[1]
isy
和params[2]
isz
我可以在 Jersey/JAX-RS 或其他方便的方式中执行此操作吗?
不确定这是否正是您想要的,但您可以做这样的事情。
@Path("/foo/bar/{other: .*}
public Response foo(@PathParam("other") VariableStrings vstrings) {
String[] splitPath = vstrings.getSplitPath();
...
}
Run Code Online (Sandbox Code Playgroud)
其中 VariableStrings 是您定义的类。
public class VariableStrings {
private String[] splitPath;
public VariableStrings(String unparsedPath) {
splitPath = unparsedPath.split("/");
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我尚未检查此代码,因为它只是为了给您一个想法。这是可行的,因为 VariableStrings 可以被注入,因为它们的构造函数只接受一个 String。
查看文档。
最后,作为使用 @PathParam 注释注入 VariableString 的替代方法,您可以将此逻辑包装到您自己的自定义 Jersey Provider 中。该提供程序将或多或少以与上面相同的方式注入“VariableStrings”,但它可能看起来更干净一些。不需要 PathParam 注释。
Coda Hale 给出了很好的概述。
归档时间: |
|
查看次数: |
3978 次 |
最近记录: |