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的问题还是我监督的事情?
答案 0 :(得分:4)
以下是JAX-RS specification所说的
3.7匹配资源方法请求
3.7.3将URI模板转换为正则表达式
- URI对模板进行编码,忽略URI模板变量规范。
- 转义URI模板中的所有正则表达式字符,再次忽略URI模板变量规范。
- 将每个URI模板变量替换为包含指定正则表达式的捕获组,如果不是,则替换为“([^ /] +?)” 正则表达式已指定。
- 如果结果字符串以'/'结尾,则删除最终字符。
- 在结果中添加'(/。*)?'。
醇>
在我阅读时,RESTEasy正确实现了规范。