Loading

Quipoin Menu

Learn • Practice • Grow

express-js / Express.js Route Parameters
tutorial

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 ParametersQuery Parameters
Part of the URL pathAfter `?` in URL
`/users/123``/users?id=123`
Accessed via `req.params`Accessed via `req.query`
Used for required parametersUsed 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