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

时间:2011-11-10 17:37:39

标签: java annotations jax-rs case-insensitive

我已通过@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() { ... }

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

感谢。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

如果你确实需要使api不区分大小写并且你在网站的前端使用Apache,那么考虑在代码之外进行:使用全部小写的url定义你的API并使用Mod-Rewrite来无论客户端实际发送的是什么,当他们点击Web服务器时都会将URL更改为小写。这个blog post描述了如何执行此操作。