使用正则表达式进行JAX-RS URI匹配

时间:2013-04-06 20:57:24

标签: regex jax-rs

我在JAX-RS中定义了以下两个@PATH:

@Path("{ontoId: [a-zA-Z0-9]+}/{version: [0-9]+}")
@GET
public String getSomething(){
      return "First";
}
@Path("{ontoId: [a-zA-Z0-9]+}/{version: [0-9]+}/{entity:#([a-zA-Z0-9]+)}")
@GET
public String getAnotherthing(){
      return "Second";
}

无法区分以下三个网址:

GET http://localhost:8080/pizza/20060718/#abcd
GET http://localhost:8080/pizza/20060718#abcd
GET http://localhost:8080/pizza/20060718

也就是说,所有这三个网址都将返回“第一”。

我的@Path定义有什么问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

FWIW,最好说明你正在使用的JAX-RS实现。

另请注意,'#'符号不是有效的URI路径组件字符,实际上是URI片段组件的分隔符。因此,它不会被解析为JAX-RS请求路径匹配算法的一部分。基本上,在所有这些情况下,只有“20060718”才会匹配(假设“披萨”是您的应用程序上下文路径)。