2012-12-25 47 views
1

我想解釋,比如像這樣的請求:斜槓舞者令牌

GET /my/path?foo=bar 

就好像它實際上改寫成如

GET /?path=/my/path&foo=bar 

現在,我想我就可以做到這一點使用以下路線,並使用與param('foo')和喜歡一起param('path'),如:

get '/:path' => sub { 
    return printf "...so you want %s, thinking that best foo is %s...", 
     param('path'), 
     param('foo'); 
} 

,但我得到404 - 看起來:path部分不能包含斜槓。

我可以通過路線來實現嗎?或者我正在看錯方向(我對舞者來說是新鮮的)?

回答

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'); 
} 
+0

這(以及使用通配符),不幸的是,引入了'隨着比賽splat'鑰匙不慎將加入到PARAMS()的空間,這將是問題的問題如果你真的*想通過例如'splat = splosh'通過GET查詢。查看[我的帖子到Dancer用戶的郵件列表](http://lists.preshweb.co.uk/pipermail/dancer-users/2012-December/002858.html) –