2013-02-18 13 views
5

Utilizzando il Dancer di applicazione web Perl Dancer, ho alcuni problemi con le barre finali nella corrispondenza dell'URL.slider finale di Perl Dancer

Dire per esempio, voglio che corrisponda al seguente URL, con un parametro opzionale Id:

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

Sia /users/morgan e /users/ partita. Anche se /users no. Che non sembra molto uniforme Dal momento che preferirei, solo la corrispondenza dell'URL: s senza la barra finale: /users/morgan e /users. Come potrei ottenere quello?

risposta

7

Un altro approccio è quello di utilizzare un nome sub - tutti gli esempi di codice Dancer tendono ad usare subs anonimi, ma non c'è niente che dice che deve essere anonimi.

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

sub show_users 
{ 
    #Do something 
} 

Si noti che, a causa del modo ballerino fa il corrispondente percorso, questo è ordine-dipendente e, nella mia esperienza, ho dovuto elencare i percorsi con un minor numero di elementi primi.

5

id contiene tutto da /user/ fino a una barra opzionale.

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

Obbligatorio [fumetto xkcd] (http://xkcd.com/1171/) :) –