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

问题描述 投票:1回答:1

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

我试过做一个负向前瞻来排除查询的第一部分,只返回公共属性(资源):

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

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

我也尝试过:

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

哪个工作按预期工作,但如果我查询也有效

http://localhost:1111/path/toresource

要么

http://localhost:1111//resource

因此,当我想要只有两个时,创建4个条目URL。

我错过了与正斜杠有关的事情,为什么我的正则表达式模式不能包含多个正斜杠?

java regex rest jax-rs resteasy
1个回答
0
投票

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

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

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

它按预期工作。我能够得到两者的回应

本地主机:1111 / notPath /到/资源

本地主机:1111 /资源

© www.soinside.com 2019 - 2024. All rights reserved.