2013-02-18 12 views
5

Korzystanie z aplikacji Perl Dancer, mam pewne problemy z ukośnymi ukośnikami w dopasowywaniu adresów URL.Perl Dancer ciągnący ukośnik

powiedzieć na przykład, chcę, aby dopasować następujący adres URL, z opcjonalnym parametrze Id:

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

Zarówno /users/morgan i /users/ mecz. Chociaż /users nie będzie. Który nie wydaje się bardzo jednolity. Ponieważ wolałbym, pasował tylko do adresu URL: bez końcowego ukośnika: /users/morgan i /users. Jak to osiągnąć?

Odpowiedz

7

Innym podejściem jest użycie nazwie SUB - wszystkie przykłady kodu Dancer tendencję do korzystania z anonimowych kanapki, ale nic nie mówi, że to musi być anonimowe.

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

sub show_users 
{ 
    #Do something 
} 

zauważyć, że ze względu na sposób taneczny robi dopasowanie trasy, jest to zależne od kolejności i, w moim doświadczeniu, miałem notować trasy z mniejszymi elementami pierwszych.

5

id będzie zawierał wszystko od /user/ aż do opcjonalnego ukośnika.

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

Obowiązkowy [komiks xkcd] (http://xkcd.com/1171/) :) –