Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl mojolicous禁用点占位符路由_Perl_Mojolicious - Fatal编程技术网

Perl mojolicous禁用点占位符路由

Perl mojolicous禁用点占位符路由,perl,mojolicious,Perl,Mojolicious,背景 我有这个路由 my$foo=$r->get('/foo/:asd')->to('foo#bar') 在控制器中,我只是使用传递的参数呈现一些json (借助于Mojolicious::Controller::REST) $self->data('param'=>$self->param('asd') 问题 向/foo/bar发送请求时,其工作正常: {“data”:{“param”:“bar”} 但是当我试图传递一个包含点的字符串时,比如一封电子邮件(email@email.com),m

背景

我有这个路由

my$foo=$r->get('/foo/:asd')->to('foo#bar')

在控制器中,我只是使用传递的参数呈现一些json (借助于
Mojolicious::Controller::REST

$self->data('param'=>$self->param('asd')


问题

/foo/bar
发送请求时,其工作正常:

{“data”:{“param”:“bar”}

但是当我试图传递一个包含
点的字符串时,比如一封电子邮件(email@email.com),mojo正在将
渲染为
斜杠
。我首先定义的路由不再相关,因为现在模式已更改为
foo/:bar/:baz


解决方案

我被告知解决方案就在这里:
这是有道理的,但我不明白如何将它与我所拥有的结合起来

我试图添加
$foo->pattern->placeholder\u start('+')到我的路由,但仍然是,模式正在改变,它的不相关的一切又一次。看起来它不会禁用与我的问题相关的点

我尝试在
$r
变量上实现pattern方法(这是Mojo的路由-
$self->routes

总之,我只需要禁用某些路由的点占位符或完全禁用


感谢

Mojolicious支持三种占位符参数:

标准占位符可以匹配除
/
之外的所有字符。 松弛占位符可以匹配除
/
以外的所有字符。
通配符占位符可以匹配所有字符。因此,如果您想支持带有
/
的参数值,必须使用宽松或通配符样式的占位符。

我不明白。你为什么说像
email@email.com
有冒号吗?对不起,我是说点(
)我现在才意识到占位符和自定义模式的概念,我只是没有正确地处理它。谢谢。当参数可能以点开头时,您可以使用什么?在这种情况下,通配符占位符似乎不起作用
my $foo = $r->get('/foo/:asd')->to('Foo#bar');
my $foo = $r->get('/foo/#asd')->to('Foo#bar');
my $foo = $r->get('/foo/*asd')->to('Foo#bar');