🔎
Routing

Query Strings & Route Order

req.query aur Matching Priority
💡 Route path DUKAAN KA PATA hai, query string USI dukaan mein diya gaya ORDER SLIP — "/products" batata hai kahan jaana hai, "?sort=price&page=2" batata hai kaise dikhana hai.

"?" ke baad ka hissa query string hai aur Express use parse karke req.query object bana deta hai. Ye filtering, sorting aur pagination ke liye use hota hai — query params OPTIONAL hote hain, route params compulsory.

Express routes ko REGISTRATION ORDER mein match karta hai, PEHLA MATCH jeet jaata hai. Isliye specific routes ("/users/me") ko dynamic routes ("/users/:id") se PEHLE likhna zaroori hai, warna "me" ko id samajh liya jaayega.

// GET /products?sort=price&page=2
app.get("/products", (req, res) => {
  const { sort = "name", page = 1 } = req.query;
  res.json({ sort, page });
});

app.get("/users/me", currentUser);   // PEHLE — warna kabhi nahi chalega
app.get("/users/:id", getUser);      // BAAD mein
🔎
Route path DUKAAN KA PATA hai, query string USI dukaan mein diya gaya ORDER SLIP — "/products" batata hai kahan jaana hai, "?sort=price&page=2" batata hai kaise dikhana hai.
1 / 2
⚡ Quick Recap
  • req.query = "?" ke baad ke optional key-value pairs, filtering/pagination ke liye
  • Express pehla matching route chalata hai, order matter karta hai
  • Static/specific routes hamesha dynamic (:param) routes se pehle likho
On this page (2 subtopics)

Query values HAMESHA string ya string array hoti hain. "?tag=a&tag=b" par req.query.tag ek ARRAY ban jaata hai — agar code single string maan raha hai to crash ho sakta hai. Isliye query params ko bhi validate/normalize karna chahiye.

// GET /search?q=node&tag=web&tag=api&page=2
const { q = "", page = "1" } = req.query;
const tags = [].concat(req.query.tag || []);   // hamesha array
const pageNum = Math.max(1, parseInt(page, 10) || 1);

Express PEHLE MATCH par ruk jaata hai. Isliye specific paths ("/users/me", "/users/export") ko parameterized paths ("/users/:id") se UPAR rakho. Isi tarah catch-all ("*") aur 404 handler hamesha SABSE NEECHE hone chahiye.

💡Tip: Debugging trick: DEBUG=express:router node app.js chalao — har request ke liye kaunsa layer match hua, poora trace dikh jaata hai.