🔄
Express Basics & Setup

Request–Response Cycle

req → middleware → route → res
💡 Express ka request cycle EK AIRPORT jaisa hai — passenger (request) check-in, security, boarding pass (middleware chain) se guzarta hai, phir plane (route handler) tak pahunchta hai. Agar koi bhi step response bhej de, safar wahin KHATAM.

Har request Express mein EK PIPELINE se guzarti hai: pehle registered middleware ORDER mein chalte hain, phir matching route handler chalta hai. Har step ke paas do choices hain — response bhej do (res.send/json), ya next() call karke aage pass kar do.

Response BHEJNE ke baad cycle KHATAM ho jaata hai. Agar tum res.send() ke baad dobara res.send() karo to "Cannot set headers after they are sent" error aata hai, kyunki HTTP headers already client ko ja chuke hote hain.

app.use((req, res, next) => { console.log(req.method, req.url); next(); });
app.get("/hi", (req, res) => res.send("hi"));

// GET /hi  ->  log chalega, phir "hi" response jaayega
// Response bhejne ke BAAD aage koi middleware nahi chalta
🔄
Express ka request cycle EK AIRPORT jaisa hai — passenger (request) check-in, security, boarding pass (middleware chain) se guzarta hai, phir plane (route handler) tak pahunchta hai. Agar koi bhi step response bhej de, safar wahin KHATAM.
1 / 2
⚡ Quick Recap
  • Request middleware chain se guzarkar route handler tak pahunchti hai
  • Har step ya response bheje ya next() call kare — dono nahi
  • Response bhejne ke baad cycle khatam, dobara bhejne par headers error aata hai
Is page mein (2 subtopics)

Request aane par Express registered stack ko TOP-TO-BOTTOM chalata hai: global middleware, phir mount path se matching router middleware, phir matching route handler. Har layer decide karti hai — response bhejo (cycle khatam) ya next() karo (agli layer). Agar kisi ne bhi response nahi bheja aur stack khatam ho gaya, to Express default 404 bhejta hai.

app.use(helmet());                 // 1
app.use(express.json());           // 2
app.use("/api", apiRouter);        // 3
app.get("/", homeHandler);         // 4
app.use(notFound);                 // 5 — koi match nahi hua
app.use(errorHandler);             // 6 — next(err) aaya

HTTP mein headers body se PEHLE jaate hain — ek baar chale gaye to badle nahi ja sakte. Do baar res.send() ya res.json() call karne par Express "Cannot set headers after they are sent to the client" throw karta hai. 90% cases mein wajah EK hi hoti hai: response bhejne ke baad "return" nahi lagaya.

💡Tip: Galat: "if (!user) res.status(404).json(...); res.json(user);" — Sahi: "if (!user) return res.status(404).json(...);"