Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 捕获所有可能的路径参数jax-rs-regex_Java_Regex_Jax Rs - Fatal编程技术网

Java 捕获所有可能的路径参数jax-rs-regex

Java 捕获所有可能的路径参数jax-rs-regex,java,regex,jax-rs,Java,Regex,Jax Rs,要为@Path(“”)设置什么正则表达式来捕获所有可能的路径参数深度(某些特定的路径将由其他方法处理除外) 比如: /{path1}/{path1}/{path1}/{path1}/{path1}/等等 尽管仍在映射这些: /create /read /update /delete 到其他Jax-rs资源方法 @Singleton @Path("/") public class MyRest { @GET @Path({pathParam}) /* This works */

要为
@Path(“”
)设置什么正则表达式来捕获所有可能的路径参数深度(某些特定的路径将由其他方法处理除外)

比如:

/{path1}/{path1}/{path1}/{path1}/{path1}/
等等

尽管仍在映射这些:

/create
/read
/update
/delete
到其他Jax-rs资源方法

@Singleton
@Path("/")
public class MyRest {
    @GET
    @Path({pathParam}) /* This works */
    public Response getSomething(...){}

    @POST
    @Path("create") /* Along with this */
    public Response createSomething(...){}

    // and so on
}

首先,您可能无法捕获这些
/{path1}/{path1}/{path1}/{path1}/{path1}/{path1}/
,因为您无法仅用一个正则表达式匹配未定义数量的参数

这就是说,似乎使用的正则表达式引擎是java的引擎(非常符合逻辑)。所以你可以用它来确保你没有抓住你的关键词。所以我想你可以有这样的东西:

@Path("/{path: (?!create|read|update|delete).*}")
然后分割路径变量,使用“/”作为分隔符

仍然。你能不能先对函数进行排序,这样一般情况就可以最后检查了?我认为这是最简单的

那么您只需使用:

@Path("/{path: .*}")
这更容易,而且样板文件更少

编辑:

准确地说,第一个不会匹配像“/create/anythingelse”这样的URL,因为它只是禁止拥有/create(当然,这同样适用于您的其他关键字)。

我尝试使用检查,但失败了:输入不完整到底是什么给了您这个。糟糕的是,Jax-rs@Path映射覆盖了映射,我的意思是@Path(“{Path}”)可以共存于同一个@Path(“create”)中,我真的不知道问题出在哪里。我希望他们可以。不管怎样,你似乎忘记了第一个映射是基于方法完成的,所以在你的例子中,不可能有任何冲突。