如何在 Play 中执行操作之前对请求 URL 进行 de-slugify!框架

发布于 2025-01-02 13:18:59 字数 491 浏览 1 评论 0原文

我总是 slugyfing 我的链接,例如:

http://site.com/this%20is%20a%20link

变成:

http://site.com/this-is-a-link

我想在处理任何操作之前对请求 URL 进行 de-slugify,因此,例如,如果我配置了以下路由:

GET /{parameter}   Controller.action

并且我调用像这样的 slugyfied 链接:

/this-is-a-link

参数被处理为“这是一个链接”而不是“this-is-a-link”

有什么建议吗?

编辑:也许必须在路由器实际路由请求之前完成值的替换。

I'm always slugyfing my links, so that for example:

http://site.com/this%20is%20a%20link

becomes:

http://site.com/this-is-a-link

I would like to de-slugify the request URL before any action is processed, so that for example if I have the following route configured:

GET /{parameter}   Controller.action

And I invoke a slugyfied link like:

/this-is-a-link

The parameter is processed as "this is a link" instead of "this-is-a-link".

Any tips?

EDIT: Maybe the replacement of the values must be done before the Router actually routes the request.

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

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

发布评论

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

评论(1

看轻我的陪伴 2025-01-09 13:18:59

Slug 应该与它们指向的内容一起保存在数据库中。创建 slug 是一种单向转换。不存在“de-slugify”这样的事情,因为多个字符会被翻译成同一个字符。

您应该通过添加数字后缀或类似的内容来处理可能的冲突。

Slugs are meant to be saved in the database along with what they point to. Creating a slug is a one-way transformation. There is no such thing as "de-slugify" as multiple characters get translated into the same character.

You should handle possible collisions by adding a number suffix or something similar.

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