Jaxrs (RESTEasy) @Path 正则表达式中的多个子资源

Jaxrs (RESTEasy) multiple sub-resources in @Path regexp

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

我尝试进行否定前瞻以排除查询的第一部分,并且仅 return 常见 属性(资源):

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

但这也没有用。它与我的第一个实现具有相同的效果,我只能访问 /resource。

我也试过:

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

它按预期工作,但如果我查询也能工作

http://localhost:1111/path/toresource

http://localhost:1111//resource

因此在我只想有两个时创建了 4 个条目 URL。

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

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

我有几个其他路径使用相同的 URL (/path/to/resource) 不同的 HTTP 方法(GET、PUT、DELETE)。我怀疑它在执行正则表达式之前试图将 path/to/resource 与其中一种方法进行匹配。我对这种怀疑的推理是,当我将 POST 方法重命名为:

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

它按预期工作。我能够从两者那里得到回复

localhost:1111/notPath/to/resource

localhost:1111/resource