我在使用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