通配符佔位符(*)被稱爲絕對匹配所有內容。 但我恐怕這不...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