在舞者令牌中大幅削减

时间:2012-12-25 01:22:30

标签: perl dancer

我想解释一下这样的请求:

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的新手)?

1 个答案:

答案 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');
}