繁体   English   中英

我如何匹配 Mojolicious 中的所有路线?

[英]How do I match all routes in Mojolicious?

我正在尝试使用 Mojolicious one-liner 向用户显示有关服务中断的消息。 无论路线如何,我都希望显示消息。 这是我所拥有的,从文档中的内容略有修改。

perl -Mojo -E 'a("/" => {text => "The service is down for maintenance."})->start' daemon

这适用于/但不适用于其他任何东西。 我添加了一个星号以将其转换为通配符路由。

perl -Mojo -E 'a("/*" => {text => "The service is down for maintenance."})->start' daemon

匹配除/之外的所有路由。 有没有办法在一个定义中匹配所有路由?

是的你可以。 试试这些例子:

perl -Mojo -E 'app->routes->get( "/" => { text => "start" }); app->routes->get( "/*any" => { text => "any" }); app->start' get /

perl -Mojo -E 'app->routes->get( "/" => { text => "start" }); app->routes->get( "/*any" => { text => "any" }); app->start' get /some_route

在这里,您在特定的/之后定义捕获所有路由*any
文档

怎么样:

perl -Mojo -E 'a("/*any" => {text => "The service is down for maintenance."})->start' daemon

我认为它适用于除“/”之外的所有网址。

看来您不能

通配符占位符...类似于正则表达式(。+)

这意味着:一个和多个符号。

但是您可以尝试使用$r->pattern->regex

如果您创建一个命名占位符,默认值为任何内容,我相信它可以满足您的需求:

perl -Mojo -E 'a("/*x" => { text => "The service is down for maintenance.", x => ''})->start' daemon

可能不是你见过的最漂亮的代码,但它只是几个字符:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM