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}")