我想解释一下这样的请求:
GET /my/path?foo=bar
就像它实际上被重写为例如。
GET /?path=/my/path&foo=bar
现在我想我可以使用以下路线实现这一目标,并使用param('path')
和param('foo')
之类的东西,例如:
get '/:path' => sub {
return printf "...so you want %s, thinking that best foo is %s...",
param('path'),
param('foo');
}
但我得到404 - 似乎:path
部分不能包含斜杠。
我可以通过路线实现这一目标吗?或者我正在寻找错误的方向(我是Dancer的新手)?
答案 0 :(得分:1)
您可能希望通过正则表达式而不是令牌来匹配路由。然后匹配存储在一个特殊的数组中,该数组可以通过关键字splat
返回。不过,path
无法访问您的param('path')
。
代码:
get qr{/([^?]*)} => sub {
my ($path) = splat;
return printf "...so you want %s, thinking that best foo is %s...",
$path,
param('foo');
}