提问者:小点点

舞者令牌中的斜线


例如,我想解释这样的请求:

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部分不能包含斜杠。

我可以通过路线实现这一点吗?还是我看错了方向(我是舞者的新人)?


共1个答案

匿名用户

您可能希望通过正则表达式而不是令牌来匹配路由。然后,匹配项被存储在一个特殊的数组中,该数组可以由关键字< 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');
}