例如,我想解释这样的请求:
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
部分不能包含斜杠。
我可以通过路线实现这一点吗?还是我看错了方向(我是舞者的新人)?
您可能希望通过正则表达式而不是令牌来匹配路由。然后,匹配项被存储在一个特殊的数组中,该数组可以由关键字< code>splat返回。但是< code>param('path')将无法访问您的< code>path。
代码:
get qr{/([^?]*)} => sub {
my ($path) = splat;
return printf "...so you want %s, thinking that best foo is %s...",
$path,
param('foo');
}