# कस्टम मिडलवेयर लिखना — एक्सप्रेस.जेएस

Source: https://www.geekswithgeeks.com/hi/expressjs/ex-custom-middleware

> अपने खुद के पुनः-उपयोगी रिक्वेस्ट-हैंडलिंग क़दम बनाएँ।

## एक साधारण गेट-कीपर

एक हेडर जाँचें और या तो जारी रखें या response भेजकर chain रोक दें।

```javascript
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)`, इसे केवल वहीं लागू करता है।

**Quiz:** अगर मिडलवेयर कभी next() नहीं बुलाता या response नहीं भेजता, तो क्या होता है?

- [ ] Express अपने-आप अगले route पर चला जाता है
- [x] रिक्वेस्ट अटक जाती है — क्लाइंट हमेशा इंतज़ार करता है
- [ ] Node कंपाइल एरर देता है

*Answer:* रिक्वेस्ट अटक जाती है — क्लाइंट हमेशा इंतज़ार करता है. next() या response के बिना, request-response चक्र कभी पूरा नहीं होता और क्लाइंट टाइमआउट हो जाता है।
