猿问

@Path regexp 中的 Jaxrs (RESTEasy) 多个子资源

我在使用正则表达式 @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。


我是否缺少与正斜杠有关的内容,为什么我的正则表达式模式不能包含多个正斜杠?


温温酱
浏览 150回答 1
1回答

幕布斯7119047

我想我可能已经找到了问题的原因。我有几个使用相同 URL(/path/to/resource)的不同 HTTP 方法(GET、PUT、DELETE)的其他路径。我怀疑它在执行正则表达式之前尝试将路径/到/资源与其中一种方法进行匹配。我对此怀疑的原因是,当我将 POST 方法重命名为:@Path("/{a: (notPath\\/to\\/)?}resource"}它按预期工作。我能够得到双方的回应本地主机:1111/notPath/to/resource和本地主机:1111/资源
随时随地看视频慕课网APP

相关分类

Java
我要回答