我在使用正则表达式 @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/路径/资源或者http://localhost:1111/resource。我尝试进行否定的前瞻来排除查询的第一部分,只返回公共属性(资源):@Path("/{a: (?!path\\/to\\/)resource}")但这也不起作用。它和我第一次实现的效果一样,我只能访问/resource。我也试过:@Path("/{a: (path\\/to)?}{b: (\\/)?}resource")哪个按预期工作,但如果我查询也可以工作http://localhost:1111/path/toresource或者http://localhost:1111//资源因此,当我只想有两个时创建 4 个条目 URL。我是否缺少与正斜杠有关的内容,为什么我的正则表达式模式不能包含多个正斜杠?
1 回答

幕布斯7119047
TA贡献1794条经验 获得超8个赞
我想我可能已经找到了问题的原因。
我有几个使用相同 URL(/path/to/resource)的不同 HTTP 方法(GET、PUT、DELETE)的其他路径。我怀疑它在执行正则表达式之前尝试将路径/到/资源与其中一种方法进行匹配。我对此怀疑的原因是,当我将 POST 方法重命名为:
@Path("/{a: (notPath\\/to\\/)?}resource"}
它按预期工作。我能够得到双方的回应
本地主机:1111/notPath/to/resource
和
本地主机:1111/资源
添加回答
举报
0/150
提交
取消