2013-02-18 18 views
5

पर्ल वेब एप्लिकेशन फ्रेमवर्क डांसर का उपयोग करके, मुझे यूआरएल मिलान में पिछली स्लैश के साथ कुछ समस्याएं आ रही हैं।पर्ल डांसर पिछला स्लैश

उदाहरण के लिए कहो, मैं एक वैकल्पिक पहचान पैरामीटर के साथ है, तो निम्न URL से मेल करना चाहते हैं:

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

दोनों /users/morgan और /users/ मैच। हालांकि /users नहीं होगा। जो बहुत समान नहीं लगता है। चूंकि मैं पसंद करूंगा, केवल यूआरएल से मेल खाता हूं: पीछे की स्लैश के बिना: /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

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

संबंधित मुद्दे