पाठ 9 / 23
कस्टम मिडलवेयर लिखना
अपने खुद के पुनः-उपयोगी रिक्वेस्ट-हैंडलिंग क़दम बनाएँ।
एक साधारण गेट-कीपर
एक हेडर जाँचें और या तो जारी रखें या response भेजकर chain रोक दें।
function requireApiKey(req, res, next) {
if (req.headers['x-api-key'] !== 'secret123') {
return res.status(401).json({ error: 'Missing or invalid API key' });
}
next();
}
app.get('/admin', requireApiKey, (req, res) => {
res.send('Welcome, admin');
});ग्लोबल बनाम प्रति-रूट
app.use(fn) हर रिक्वेस्ट पर लागू होता है। किसी route में fn को अतिरिक्त आर्ग्युमेंट के रूप में देना, जैसे app.get('/admin', fn, handler), इसे केवल वहीं लागू करता है।
त्वरित जाँच: अगर मिडलवेयर कभी next() नहीं बुलाता या response नहीं भेजता, तो क्या होता है?
- Express अपने-आप अगले route पर चला जाता है
- रिक्वेस्ट अटक जाती है — क्लाइंट हमेशा इंतज़ार करता है
- Node कंपाइल एरर देता है
Answer
रिक्वेस्ट अटक जाती है — क्लाइंट हमेशा इंतज़ार करता है — next() या response के बिना, request-response चक्र कभी पूरा नहीं होता और क्लाइंट टाइमआउट हो जाता है।