JAX-RS:不区分大小写的路径

我已经通过@Path注释将REST服务/方法锚定到URI模板。 看起来像往常一样:

 @GET @Path("/message") @Produces("application/json") public Response getMessage() { ... } 

但我的REST服务必须不区分大小写。 现在我在我的所有代码中使用@Path中的正则表达式:

 @GET @Path("/{message:[mM][eE][sS][aA][gG][eE]}") @Produces("application/json") public Response getMessage() { ... } 

这看起来很奇怪。 有没有我在规范中忽略的东西(我希望不是,看到这个 )或者有任何JAX-RS实现的特殊function吗? 现在我正在使用JBoss RESTeasy 。

谢谢。

我不知道resteasy,但如果它支持所有java正则表达式语法,你可以使用(?i:message)而不是你的模式。

如果你真的需要使api不区分大小写并且你在站点的前端使用Apache,那么考虑在代码之外进行:使用全部小写的url定义你的API并使用Mod-Rewrite来更改url无论客户端实际发送的是什么,当他们点击Web服务器时都会小写。 这篇博文描述了如何做到这一点。

此外,下一个模式对我有用:

 @Path("/{externalorders: (?i)externalorders}")