पाठ 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 चक्र कभी पूरा नहीं होता और क्लाइंट टाइमआउट हो जाता है।