@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(当然,其他关键字也适用于此)。

10-07 23:56