4

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 的问题,还是我监督了什么?

4

1 回答 1

4

这是JAX-RS 规范所说的

3.7 将请求与资源方法匹配

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

  1. URI 编码模板,忽略 URI 模板变量规范。
  2. 转义 URI 模板中的任何正则表达式字符,再次忽略 URI 模板变量规范。
  3. 如果没有指定正则表达式,则将每个 URI 模板变量替换为包含指定正则表达式或“([^/]+?)”的捕获组。
  4. 如果结果字符串以 '/' 结尾,则删除最后一个字符
  5. 附加“(/。*)?” 到结果。

当我读到它时,RESTEasy 正确地实现了规范。

于 2013-03-05T04:17:36.873 回答