通配符占位符 (*) 据说完全匹配所有内容。但我怕它不...
我有一个使用以下方法的网络服务:
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 {
但结果是一样的。
有人知道解决这个问题的方法吗?还是我应该将此作为错误提交?
问候,洛伦佐
更新 对于有同样问题的人,我已经像这样解决了这个问题:
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);
}