gpt4 book ai didi

perl - mojolicious 禁用点占位符路由

转载 作者:行者123 更新时间:2023-12-01 09:51:21 26 4
gpt4 key购买 nike

背景

我有这个路由

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

在 Controller 中,我只是用传递的参数渲染一些 json(在 Mojolicious::Controller::REST 的帮助下)

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


问题

当向 /foo/bar 发送请求时,它按预期工作:

{"data":{"param":"bar"}}

但是当我尝试传递包含 dot 的字符串时,例如电子邮件 (email@email.com),mojo 正在呈现 dot作为 斜杠。我最初定义的路由不再相关,因为现在模式已更改为 foo/:bar/:baz


解决方案

有人告诉我解决方案就在这里: https://github.com/kraih/mojo/blob/master/t/mojolicious/routes.t#L218
这是有道理的,但我不明白如何将它与我所拥有的结合起来。

我尝试将 $foo->pattern->placeholder_start('+'); 添加到我的路由中,但是,模式仍在发生变化,并且再次无关紧要。看起来它不会禁用与我的问题相关的点。

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

底线,我只需要为某些路由或完全禁用点占位符。

谢谢

最佳答案

Mojolicious 支持三种占位符参数:

Standard

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

Relaxed

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

Wildcards

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

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

关于perl - mojolicious 禁用点占位符路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37133551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com