2013-02-18 18 views
5

Perl web uygulaması çerçevesi Dancer uygulamasını kullanarak, URL eşleşmesinde eğik çizgi işaretleri ile ilgili bazı sorunlar yaşıyorum.Perl Dancer takip eden eğik çizgi

Say örneğin, ben isteğe bağlı bir kimliği parametre ile aşağıdaki URL'yi eşleştirmek istiyorum:

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

/users/morgan ve /users/ maçı Hem. /users olmasa bile. Hangi çok düzgün görünmüyor. Tercih ettiğimden, yalnızca URL: s ile sondaki eğik çizgi olmadan eşleşir: /users/morgan ve /users. Bunu nasıl başarabilirim?

cevap

7

başka bir yaklaşım adlandırılmış alt kullanmaktır - Dansçı kodunun tüm örnekler anonim subs kullanma eğiliminde, ancak anonim gerekli diyor bir şey yok. yolu Dansçı rota eşleştirme yapar nedeniyle, bu benim deneyim, sipariş bağlıdır ve,

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

sub show_users 
{ 
    #Do something 
} 

Not, ben ilk daha az elemanları ile yolları listelemek için yaşadım.

5

id, /user/'dan isteğe bağlı bir eğik çizgiye kadar her şeyi içerir.

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

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

İlgili konular