@path Regexp中的JAXRS(Resteasy)多个子资源



我在使用REGEX @path参数方面遇到了一些问题。我正在尝试匹配路径A或B。我一直在尝试使用:

@Path("/{a: path\/to\/resource|resource}")

以便要么

http://localhost:1111/path/to/resource

http://localhost:1111/resource

都将执行相同的方法。当我使用两个前斜线时,我的问题似乎就会出现。我只能使用

访问该方法

http://localhost:1111/resource

但不是另一个。

但是:

@Path("/{a: path\/resource|resource}")

它可以按预期工作,我可以使用

访问该方法

http://localhost:1111/path/resource

http://localhost:1111/resource。

我尝试进行负面lookahead来排除查询的第一部分,仅返回公共属性(资源):

@Path("/{a: (?!path\/to\/)resource}")

但这也不起作用。它的效果与我的第一个实现相同,我只能访问/资源。

我也尝试了:

@Path("/{a: (path\/to)?}{b: (\/)?}resource")

按预期工作,但如果我询问

,也有效

http://localhost:1111/path/toresource

http://localhost:1111//资源

因此,当我只想有两个时,创建4个输入URL。

我错过了与前向斜线有关的东西,为什么我的正则表达式模式不包含一个以上的前向斜线?

我想我可能已经找到了问题的原因。

我还有其他几条路径,具有不同的HTTP方法(GET,PUT,删除),使用相同的URL(/path/to/resource)。我怀疑它在执行正则时,它试图将路径/与/资源与其中一种方法匹配。我对这种怀疑的理由是,当我将帖子方法重命名为:

@Path("/{a: (notPath\/to\/)?}resource"}

它按预期工作。我能够从两个

中得到回应

localhost:1111/notpath/to/resource

localhost:1111/resource

最新更新