2013-02-18 8 views
5

Perl Webアプリケーションフレームワークダンサーを使用して、URLマッチングで後続のスラッシュに問題があります。Perlダンサー後続のスラッシュ

get '/users/:id?' => sub 
{ 
    #Do something 
} 

両方/users/morgan/users/試合:

言ってやる例えば、私は、オプションのIDパラメータで、以下のURLにマッチさせたいです。 /usersはありません。それは非常に均一に見えません。私は好きなので、末尾にスラッシュを付けずにURL:sにのみ一致する: /users/morgan/users。どのように私はそれを達成するだろうか?

答えて

7

別のアプローチは、名前のサブを使用することです - ダンサーコードのすべての例では無名サブルーチンを使用する傾向があるが、それは匿名でなければならないと言うものは何もありません。

get '/users' => \&show_users; 
get '/users/:id' => \&show_users; 

sub show_users 
{ 
    #Do something 
} 

注によるダンサーがルートマッチングを行う方法に、これは私の経験では、私が最初に少数の要素を持つルートをリスト表示しなければならなかった、オーダーに依存しており、、ということ。

5

idには、/user/からオプションのスラッシュまでのすべてが含まれます。

get qr{^/users/?(?<id>[^/]+)?$} => sub { 
    my $captures = captures; 
    if (defined $captures->{id}) { 
    return sprintf 'the id is: %s', $captures->{id}; 
    } 
    else { 
    return 'global user page' 
    } 
}; 
+2

義務[xkcd comic](http://xkcd.com/1171/):) –