使用 Jersey 的早期版本(~1.12),如果它出现在路径的末尾,我曾经将文字路径元素“数据”与一个注释匹配,如果它出现在其他地方,则使用另一个注释:
@Path("data$")
public Object getDataResource(@Context UriInfo uriInfo) {
// Matched when 'data' is the last path element
...
}
@Path("{name}")
public Object getNamedResource(@Context UriInfo uriInfo) {
// Matched when 'data' is not the last path element
...
}
在 1.12 和 1.17 之间的某个时间点,这种行为发生了变化,并且在将模式应用于传入 URI 之前,'$' 字符现在被转义。现在第一个方法(getDataResource)永远不会匹配。
例如,在匹配时http://.../data/data
,我希望getNamedResource
匹配第一个“数据”并getDataResource
匹配第二个“数据”。相反,getNamedResource
现在两者都匹配。
- 我可以恢复到我负责转义正则表达式的旧行为吗?
- 是否有一种新的/更好的/其他技术仅匹配 URI 上的最后一个路径元素?