🔢
Routing

Route Parameters

req.params aur Dynamic Paths
💡 Route parameter EK FORM ke BLANK jaisa hai — "/users/:id" ka matlab hai "/users/____", aur jo bhi us khaali jagah mein aayega wo req.params.id ban jaayega.

":" se shuru hone waala segment EK DYNAMIC PARAMETER hai. "/users/:id" par "/users/42" hit karne se req.params.id = "42" milta hai. Multiple params bhi ho sakte hain: "/users/:userId/posts/:postId".

Params HAMESHA STRING hote hain, chaahe URL mein number ho. Database query se pehle Number() ya validation zaroor karo. Path ko constrain karne ke liye regex bhi de sakte ho: "/users/:id(\\d+)" sirf digits match karega.

app.get("/users/:userId/posts/:postId", (req, res) => {
  const { userId, postId } = req.params;
  res.json({ userId, postId });   // dono STRING honge
});

app.get("/orders/:id(\\d+)", getOrder);  // sirf numeric id match karega
🔢
Route parameter EK FORM ke BLANK jaisa hai — "/users/:id" ka matlab hai "/users/____", aur jo bhi us khaali jagah mein aayega wo req.params.id ban jaayega.
1 / 2
⚡ झट से Recap
  • ":name" wala segment dynamic parameter banta hai, req.params mein milta hai
  • Params hamesha string hote hain, number chahiye to convert karo
  • Regex constraint se galat format wali requests route tak pahunchti hi nahi
इस page में (2 subtopics)

URL ke dynamic segments req.params object mein aate hain, key wahi hoti hai jo ":" ke baad likhi thi. Nested resources mein multiple params common hain — "/users/:userId/posts/:postId" se dono ids alag-alag mil jaati hain.

app.get("/users/:userId/posts/:postId", (req, res) => {
  const { userId, postId } = req.params;
  res.json({ userId: Number(userId), postId: Number(postId) });
});

Agar har route mein same id se resource load karna pad raha hai, to router.param() ek hi jagah wo kaam kar sakta hai — jab bhi us param waala route match ho, ye pehle chalta hai aur resource ko req par attach kar deta hai.

router.param("id", async (req, res, next, id) => {
  const user = await db.findUser(id);
  if (!user) return res.status(404).json({ error: "User not found" });
  req.user = user;
  next();
});
router.get("/:id", (req, res) => res.json(req.user));  // ab seedha use