mojolicious 禁用点占位符路由
mojolicious disable dot placeholder routing
背景
我有这个路由
my $foo = $r->get('/foo/:asd')->to('Foo#bar');
在控制器中,我只是用传递的参数渲染一些 json
(在 Mojolicious::Controller::REST
的帮助下)
$self->data( 'param' => $self->param('asd') );
问题
向 /foo/bar
发送请求时,它按预期工作:
{"data":{"param":"bar"}}
但是当我试图传递一个包含 dot
的字符串时,例如电子邮件 (email@email.com),mojo 将 dot
渲染为slash
。我最初定义的路由不再相关,因为现在模式已更改为 foo/:bar/:baz
解决方案
有人告诉我解决方案就在这里:
https://github.com/kraih/mojo/blob/master/t/mojolicious/routes.t#L218
这很有道理,但我不明白如何将其与我所拥有的相结合。
我尝试将 $foo->pattern->placeholder_start('+');
添加到我的路由中,但模式仍然在变化,并且再次变得无关紧要。它看起来不会禁用与我的问题相关的点。
我尝试在 $r
变量(这是 Mojo 的路由 - $self->routes
)上实现模式方法
最重要的是,我只需要为某些路由或完全禁用点占位符。
谢谢
背景
我有这个路由
my $foo = $r->get('/foo/:asd')->to('Foo#bar');
在控制器中,我只是用传递的参数渲染一些 json
(在 Mojolicious::Controller::REST
的帮助下)
$self->data( 'param' => $self->param('asd') );
问题
向 /foo/bar
发送请求时,它按预期工作:
{"data":{"param":"bar"}}
但是当我试图传递一个包含 dot
的字符串时,例如电子邮件 (email@email.com),mojo 将 dot
渲染为slash
。我最初定义的路由不再相关,因为现在模式已更改为 foo/:bar/:baz
解决方案
有人告诉我解决方案就在这里:
https://github.com/kraih/mojo/blob/master/t/mojolicious/routes.t#L218
这很有道理,但我不明白如何将其与我所拥有的相结合。
我尝试将 $foo->pattern->placeholder_start('+');
添加到我的路由中,但模式仍然在变化,并且再次变得无关紧要。它看起来不会禁用与我的问题相关的点。
我尝试在 $r
变量(这是 Mojo 的路由 - $self->routes
)上实现模式方法
最重要的是,我只需要为某些路由或完全禁用点占位符。
谢谢