为@Path("<what_regex>")
设置的正则表达式是什么,以捕获所有可能的路径参数深度(打算通过其他方法处理的某些特定路径除外)?
喜欢:/{path1}/{path1}/{path1}/{path1}/{path1}/
等
虽然仍然映射这些:
/create
/read
/update
/delete
其他Jax-rs资源方法。
@Singleton
@Path("/")
public class MyRest {
@GET
@Path({pathParam}) /* This works */
public Response getSomething(...){}
@POST
@Path("create") /* Along with this */
public Response createSomething(...){}
// and so on
}
最佳答案
首先,您可能无法捕获这些/{path1}/{path1}/{path1}/{path1}/{path1}/
,因为仅使用一个正则表达式就无法匹配数量不确定的参数。
也就是说,似乎使用的正则表达式引擎是Java的(非常合逻辑)。因此,您可以使用negative lookaheads来确保您没有抓住关键字。所以我想你可能会有这样的事情:
@Path("/{path: (?!create|read|update|delete).*}")
然后使用“/”作为分隔符分割路径var。
还是。您不能只订购函数,以便最后检查一般情况吗?我认为这是最简单的...
然后,您只需要使用:
@Path("/{path: .*}")
这更容易,并且样板更少。
编辑:
确切地说,第一个不会匹配“/ create / anythingelse”之类的URL,因为它只是禁止使用/ create(当然,其他关键字也适用于此)。