gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:08 24 4
gpt4 key购买 nike

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

有没有办法将未知数量的路径元素转换为可变参数 Java 方法的参数?即。 /foo/bar/x/y/z 应该转到方法:foo(@PathParam(...) String [] params) { ... } where params[0]xparams[1]yparams[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("/");
}
}

注意,我没有检查这段代码,因为它只是为了给你一个想法。这是有效的,因为可以通过构造函数注入(inject) VariableStrings它只需要一个字符串。

查看 docs .

最后,作为使用@PathParam 注释注入(inject) VariableString 的替代方法您可以改为将此逻辑包装到您自己的自定义 Jersey Provider 中。该提供程序将以与上述大致相同的方式注入(inject)“VariableStrings”,但它可能看起来更简洁一些。不需要 PathParam 注释。

Coda Hale 给出了一个很好的 overview .

关于java - JAX-RS/Jersey 中 vararg 数组的路径段序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10925135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com