इसे पूरी तरह से समझने के लिए, कृपया दस्तावेज़ पढ़ें:http://expressjs.com/api.html #रूटर.विधि
एक्सप्रेस रूट कैसे पथ कैप्चर करते हैं
जब आप :param
. का उपयोग करते हैं आपके पथ के एक भाग के रूप में, यह /*
. जैसी हर चीज़ से मेल खाता है , और कैप्चर किया गया मान req.params.param
. में संग्रहीत होता है ।
जब आपके पास एक से अधिक नियम होते हैं, तो पहला पंजीकृत नियम वह होता है जिसके विरुद्ध जाँच की जाती है। यह एक मैच मिलने तक प्रत्येक नियम के खिलाफ प्रत्येक कॉल की जांच करता है। अगर आप next()
. पर कॉल करते हैं इसके पास कोई मान नहीं होने के कारण, यह अगले मैच की तलाश करेगा (या तो उसी मार्ग में, या अगले मिडलवेयर में जारी रहेगा)।
तो ये तीन नियम सभी चलेंगे
var handleRoute = function(req, res, next){
console.log(req.path + ' ' + req.params.id + ' ' + req.params.user + ' ' + req.params[0]);
next();
}
route.route('/user/:id').get(handleRoute);
route.route('/user/:user').get(handleRoute);
route.route('/user/*').get(handleRoute);
जब मैं /user/foobar
. का अनुरोध करता हूं , मुझे निम्न आउटपुट दिखाई देगा (और शायद क्लाइंट के रूप में एक त्रुटि क्योंकि मैंने कभी जवाब नहीं दिया:पी)
/user/foobar foobar undefined undefined
/user/foobar undefined foobar undefined
/user/foobar undefined undefined foobar
यह तीनों को प्रभावित करेगा, लेकिन संदर्भ प्रत्येक के लिए अलग है।
रेगुलर एक्सप्रेशन के साथ पथ पैटर्न कैप्चर कैसे करें
यदि आप आईडी (मान लें सभी नंबर) और उपयोगकर्ता नाम (सभी अक्षर) के लिए अलग रूट कैप्चर करना चाहते हैं, तो आप यह कर सकते हैं:
var handleRoute = function(tag) {
return function(req, res, next) {
console.log(tag + ' ' + req.path + ' -> ' + req.params[0]);
res.status(200)
.json({
success: 'yay!'
});
};
};
route.route(/^\/user\/([0-9]+)$/i)
.get(handleRoute('id'));
route.route(/^\user\/([A-Za-z]+)$/i)
.get(handleRoute('user'));
route.route('/user/*')
.get(handleRoute('catch all'));
मेरे कैप्चर ग्रुप के चारों ओर पैराथीसिस पर ध्यान दें। इसके बिना params
खाली है। यह केवल *
. के साथ स्वतः कैप्चर करता है स्ट्रिंग में क्योंकि वे अच्छे लोग हैं। जब मैं तीन अलग-अलग प्रकारों के खिलाफ दौड़ता हूं तो मुझे आउटपुट के लिए निम्नलिखित मिलेगा।
id /user/123 -> 123
user /user/user -> user
catch all /user/user.1 -> user.1
जो कुछ भी समझाया गया है, आप अपने सिस्टम को संक्रमित करने के लिए बग के लिए कुछ वैक्टर के लिए खुद को खोल रहे हैं। शायद आप अपने यूआरएल पैटर्न के बारे में सोचना चाहें।