休息 - RESTEasy剪切尾随@Path

时间:2013-03-04 07:37:59

标签: rest jax-rs resteasy

RESTEasy看起来忽略了斜杠,因此我无法使用和不使用尾部斜杠编写两个不同的Web服务,此示例显示:

@Path("foo")
public class TestClass {

    @GET
    @Path("/bar")
    public Response bar1() {
        ...
    }

    @GET
    @Path("/bar/")
    public Response bar2() {
        ...
    }
}

使用RESTEasy,对/ foo / bar以及/ foo / bar /的GET请求由bar2()处理。考虑到RFC3986和JAX-RS规范我不明白为什么这样处理。这可能是RESTEasy的问题还是我监督的事情?

1 个答案:

答案 0 :(得分:4)

以下是JAX-RS specification所说的

3.7匹配资源方法请求

3.7.3将URI模板转换为正则表达式

  
      
  1. URI对模板进行编码,忽略URI模板变量规范。
  2.   
  3. 转义URI模板中的所有正则表达式字符,再次忽略URI模板变量规范。
  4.   
  5. 将每个URI模板变量替换为包含指定正则表达式的捕获组,如果不是,则替换为“([^ /] +?)”   正则表达式已指定。
  6.   
  7. 如果结果字符串以'/'结尾,则删除最终字符
  8.   
  9. 在结果中添加'(/。*)?'。
  10.   

在我阅读时,RESTEasy正确实现了规范。