⚙️
Middleware

What is Middleware?

Functions Between Request and Response
💡 Middleware AIRPORT SECURITY CHECKPOINTS jaise hain — har passenger (request) ek ke baad ek checkpoint se guzarta hai. Koi checkpoint bag mein tag lagata hai (req.user set karna), koi entry rok deta hai (401 bhejna).

Middleware EK FUNCTION hai jo (req, res, next) receive karta hai aur request ke ROUTE HANDLER tak pahunchne se PEHLE chalta hai. Wo request/response ko padh sakta hai, MODIFY kar sakta hai, cycle KHATAM kar sakta hai, ya next() se aage bhej sakta hai.

Express ka poora design middleware par tika hai — body parsing, logging, authentication, CORS, error handling, sab middleware hi hain. Isi wajah se Express ko "middleware framework" bhi kaha jaata hai.

function logger(req, res, next) {
  req.startTime = Date.now();          // request ko enrich karna
  console.log(`${req.method} ${req.url}`);
  next();                              // agle middleware ko pass
}
app.use(logger);
⚙️
Middleware AIRPORT SECURITY CHECKPOINTS jaise hain — har passenger (request) ek ke baad ek checkpoint se guzarta hai. Koi checkpoint bag mein tag lagata hai (req.user set karna), koi entry rok deta hai (401 bhejna).
1 / 2
⚡ Quick Recap
  • Middleware = (req, res, next) lene waala function jo route se pehle chalta hai
  • Request modify kar sakta hai, response bhej sakta hai, ya next() kar sakta hai
  • Express ka poora ecosystem (parsing, auth, CORS) middleware par bana hai
Is page mein (2 subtopics)

Har middleware ko teen cheezein milti hain: req (request, jise modify kiya ja sakta hai), res (response, jisse cycle khatam ki ja sakti hai), aur next (agli layer chalane ke liye). Isi simple contract se authentication, logging, parsing, caching — sab kuch banta hai.

function requestTimer(req, res, next) {
  const start = Date.now();
  res.on("finish", () => {            // response bhejne ke baad
    console.log(`${req.method} ${req.originalUrl} - ${Date.now() - start}ms`);
  });
  next();
}

app.use(fn) har request par chalta hai, lekin app.use("/admin", fn) SIRF un requests par chalta hai jinka path "/admin" se shuru hota hai. Isse heavy middleware (auth, upload parsing) ko sirf zaroori routes tak seemit rakha ja sakta hai.

app.use(logger);                       // har request
app.use("/admin", requireAdmin);       // sirf /admin/*
app.use("/api", express.json());       // JSON parsing sirf API par