Jax-rs / Jersey正则表达式路径规则发生冲突

时间:2017-02-19 19:54:58

标签: java jax-rs jersey-2.0

我有泽西注释的这个路径规则:

@GET
@Path("{format:([^/]+?)?}")

它与www.site.com/it或www.site.com匹配,这对我来说非常完美。现在,我想添加一个与以下内容匹配的新规则: www.site.com/it/search或www.site.com/search。 我试过这个:

@GET
@Path("{format:([^/]+?)?}/search")

但实际上第一条规则被解雇了,我怎样才能从第一条规则中排除一些字符串(如搜索和其他字符串)或作为相反的解决方案,将可选路径限制为某些特定值,例如en,fr等等.... 谢谢

2 个答案:

答案 0 :(得分:0)

尝试第一个终点:

@GET
@Path("/{format: \\w*}")

这是第二个终点:

@GET
@Path("/{format: \\w*}/search")

答案 1 :(得分:0)

最后,我找到了这个解决方案:Optional path segment in Jersey JAX-RS

真的,你只需要为你的servlet映射添加新的url-pattern。 所以只需要在web.xml上:

<servlet-mapping>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <url-pattern>/api/*</url-pattern>
    <url-pattern>/v1/api/*</url-pattern>
</servlet-mapping>