为@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
}
答案 0 :(得分:17)
首先,您可能无法捕获这些/{path1}/{path1}/{path1}/{path1}/{path1}/
,因为您只能使用一个正则表达式来匹配未定义数量的参数。
那就是说,似乎使用的正则表达式引擎是java的(非常合乎逻辑)。因此,您可以使用negative lookaheads来确保您没有抓住关键字。所以我想你可以有类似的东西:
@Path("/{path: (?!create|read|update|delete).*}")
然后拆分路径var,使用“/”作为分隔符。
<强>还是即可。难道你不能只是订购你的功能所以最后检查一般情况吗?我认为这是最简单的......
然后你只需要使用:
@Path("/{path: .*}")
这样更容易,而且样板更少。
修改强>
确切地说,第一个不匹配“/ create / anythingelse”之类的URL,因为它只是禁止拥有/创建(当然,同样的东西也适用于其他关键字)。