通配符占位符(*)被称为绝对匹配所有内容。 但我恐怕这不...Mojolicious通配符占位符和问号
我有以下方法webservice的:
get '/*param' => sub {
my $self = shift;
my $param = $self->stash('param');
$self->app->log->debug($param);
}
当我询问我的服务有:http://localhost:3000/search 那么方法日志“搜索”这是确定 但 当我询问我的服务有:http://localhost:3000/search?page=1 那么该方法也记录“搜索”,这是不正常IMO
我也试过更换
get '/*param' => sub {
与
get '/:param' => [param => qr/.*/] => sub {
,但结果是一样的。
有没有人知道解决这个问题的方法? 或者我应该把它作为一个错误?
问候, 洛伦佐
UPDATE 人同样的问题,我解决此问题的工作是这样的:
get '/*path' => sub {
my $self = shift;
my $path = $self->stash('path');
my @params = $self->param;
if (scalar @params > 0) {
$path .= '?';
foreach my $param (@params) {
$path .= $param . '=' . $self->param($param) . '&';
}
$path = substr($path, 0, length($path) - 1);
}
$self->app->log->debug($path);
}
你的信息我不是确定我明白你在说Korjavin,但通配符占位符应该匹配_everything_(根据文档),而不是。我也确信“?page = 1”部分不在藏品的其他地方。我添加了“$ self-> app-> log-> debug(Dumper $ self> stash);”并且我无法在任何地方找到其余的网址(即?page = 1)! – ldx