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

发布于 2024-12-14 23:05:50 字数 666 浏览 1 评论 0原文

我已通过 @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 实现有任何特殊功能吗?现在我正在使用 JBoss RESTeasy

谢谢。

I have anchored REST services/methods to URI template by @Path annotation. It looks like as usual:

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

But my REST service has to be case-insensitive. Now I'm using regular expression in @Path in all my code like that:

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

This looks weird. Is there something I overlooked in specification (I hope not, see this) or has any of JAX-RS implementations special feature for that? Now I'm using JBoss RESTeasy.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

假情假意假温柔 2024-12-21 23:05:50

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

i don't know resteasy, but if it supports all java regex syntax, you could use (?i:message) instead of your pattern.

你怎么这么可爱啊 2024-12-21 23:05:50

如果您确实需要使 api 不区分大小写,并且您在站点前端使用 Apache,请考虑在代码之外执行此操作:使用全小写的 url 定义您的 API,并使用 Mod-Rewrite 更改 url无论客户端实际发送什么内容,当它们到达 Web 服务器时都变为小写。这篇博客文章介绍了如何执行此操作。

If you really need to make the api case-insensitive and you're using Apache on the front-end of your site, consider doing it outside of code: define your API with the urls all lowercase and use Mod-Rewrite to change the urls to lowercase when they hit the web server no matter what the client actually sent. This blog post describes how to do this.

一花一树开 2024-12-21 23:05:50

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

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

Also, the next pattern is working for me:

@Path("/{externalorders: (?i)externalorders}")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文