Express.js FundamentalsLesson 1.4
Route parameters and query strings in Express
req.params, req.query, dynamic route segments, colon syntax, optional params, query string parsing, multiple query params
Route Parameters vs Query Strings
Express gives you two ways to pass data in a URL: route parameters (part of the path) and query strings (after the ?).
Route parameters — req.params
app.get('/users/:id', (req, res) => {
const { id } = req.params; // always a string
const user = users.find(u => u.id === parseInt(id));
if (!user) return res.status(404).json({ error: 'User not found' });
res.json(user);
});
// Multiple params
app.get('/orgs/:orgId/users/:userId', (req, res) => {
const { orgId, userId } = req.params;
res.json({ orgId, userId });
});Query strings — req.query
// GET /products?category=shoes&sort=price&limit=10
app.get('/products', (req, res) => {
const { category, sort, limit = 20 } = req.query;
// Filter/sort logic here
res.json({ category, sort, limit: parseInt(limit) });
});When to use which: Use route params for identifying a specific resource (/users/42). Use query strings for filtering, sorting, or pagination (/users?role=admin&page=2).
Route param values are always strings — always parse them when comparing to numbers. Query string values are also strings, including booleans: 'true' is not true.
