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

标签 java regex rest jax-rs 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/path/resource

http://localhost:1111/resource.

我尝试执行否定前瞻来排除查询的第一部分,并仅返回公共(public)属性(资源):

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

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

我也尝试过:

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

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

http://localhost:1111/path/toresource

http://localhost:1111//resource

因此,当我只想有两个入口 URL 时,创建了 4 个入口 URL。

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

最佳答案

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

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

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

它按预期工作了。我能够得到双方的回复

localhost:1111/notPath/to/resource

localhost:1111/resource

关于java - Jaxrs (RESTEasy) @Path regexp 中的多个子资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55119503/

相关文章:

Java - 如果单词以用户输入的定界符结尾,则执行 x

php - 使用 htaccess 删除扩展后,URL 不能与斜杠一起使用

python - 是否只有一个 Python 解释器执行多个并发脚本?

rest - 如何从 Microsoft Graph API 获取 "out of office status"?

node.js - 表达:req.params 与 req.body (JSON)

java - 我应该包括什么(使用 maven)以在我的 Java 应用程序中使用嵌入式芝麻存储库

java - 找不到符号: variable TestUtils

java - (jzy3d) 如何在Scatter上有效显示工具提示?

javascript - 只接受字母和空格、数字和空格以及不同框中带有空格的字母和数字

Java:Hadoop:MapReduce:使用过滤器从 hbase 检索数据,int/string 比较