Express.js Route Parameters
In real applications, you rarely have static URLs like `/user/john` or `/product/123`. You need dynamic routes that can handle different values. Express makes this easy with **route parameters**.
What are Route Parameters?
Route parameters are named URL segments that capture the values specified at their position in the URL. They are defined with a colon (`:`) followed by a parameter name.
Think of route parameters as placeholders that can match any value. When a user visits `/users/42`, the parameter `:id` captures `42`.
Basic Route Parameters
<!-- Route with parameter -->app.get('/users/:id', (req, res) => { const userId = req.params.id; res.send(`User ID: ${userId}`);});
<!-- Example URLs --><!-- /users/123 → User ID: 123 --><!-- /users/john → User ID: john --><!-- /users/abc456 → User ID: abc456 -->Multiple Parameters
You can have multiple parameters in a single route:
app.get('/products/:category/:id', (req, res) => { const { category, id } = req.params; res.send(`Category: ${category}, Product ID: ${id}`);});
<!-- /products/electronics/42 → Category: electronics, Product ID: 42 -->Route Parameters vs Query Parameters
| Route Parameters | Query Parameters |
|---|---|
| Part of the URL path | After `?` in URL |
| `/users/123` | `/users?id=123` |
| Accessed via `req.params` | Accessed via `req.query` |
| Used for required parameters | Used for optional parameters, filters, sorting |
Query Parameters Example
<!-- /products?category=electronics&sort=price -->app.get('/products', (req, res) => { const { category, sort } = req.query; res.send(`Category: ${category}, Sort by: ${sort}`);});URL Building with Parameters
When building URLs dynamically, you need to construct them with proper parameters:
<!-- In your frontend JavaScript -->const userId = 123;const url = `/users/${userId}`; <!-- /users/123 -->
<!-- With multiple parameters -->const category = 'electronics';const productId = 42;const url = `/products/${category}/${productId}`;<!-- /products/electronics/42 -->
<!-- With query parameters -->const baseUrl = '/products';const queryString = `?category=${category}&sort=price`;const fullUrl = baseUrl + queryString;<!-- /products?category=electronics&sort=price -->Optional Parameters
Express doesn't support optional parameters directly, but you can use multiple routes or regular expressions.
<!-- Handle both /users and /users/:id -->app.get('/users', (req, res) => { <!-- List all users --> res.send('All users');});
app.get('/users/:id', (req, res) => { <!-- Single user --> res.send(`User ${req.params.id}`);});Two Minute Drill
- Route parameters (`:param`) capture dynamic values from the URL path.
- Access parameters via `req.params` object.
- Query parameters (`?key=value`) are accessed via `req.query`.
- Use route parameters for required values, query parameters for optional filters.
- Build dynamic URLs using template literals: `/users/${id}`.
Need more clarification?
Drop us an email at career@quipoinfotech.com
