Open In App

How To Handle Route Parameters in Express?

Last Updated : 24 Feb, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report
News Follow

Route parameters in ExpressJS capture dynamic values from URLs, like /users/:userId. These values are accessible in your route handler via req.params, enabling dynamic content generation. This allows for creating reusable routes that handle various inputs with a single pattern.

JavaScript
app.get('/users/:userId', (req, res) => {
    const userId = req.params.userId;
  // Logic to handle the user with the specified userId
});
  • /users/:userId: The :userId is the route parameter that captures the value in the URL after /users/.
  • req.params.userId: This retrieves the captured value from the URL, allowing you to use it within the route handler to fetch data or perform actions.

Handling Route Parameters in ExpressJS

Route parameters in ExpressJS allow you to capture dynamic values from the URL and use them in your application. This section explains how to handle basic, optional, and multiple route parameters.

1. Basic Route Parameter Handling

Route parameters are used to capture values from the URL. You can access these parameters through req.params and use them in your route handler.

JavaScript
const express = require('express');
const app = express();
const PORT = 3000;

app.get('/users/:userId', (req, res) => {
    const userId = req.params.userId;
    res.send(`<h1>User Profile</h1><p>User ID: ${userId}</p>`);
});

app.listen(PORT, () => {
    console.log(`Server is running at http://localhost:${PORT}`);
});
  • /users/:userId: :userId is a route parameter that captures the value after /users/.
  • req.params.userId: Access the captured value and use it in the route handler for further logic.

Output: Accessing http://localhost:3000/users/123 will display

UserProfile
Basic Route Parameter Handling

2. Optional Route Parameters

You can define optional route parameters by adding a question mark (?) after the parameter name. This means that the route will match even if the parameter is not provided.

JavaScript
const express = require('express');
const app = express();
const PORT = 3000;

app.get('/products/:productId?', (req, res) => {
  const productId = req.params.productId || 'default';
  res.send(`<h1>Product Page</h1><p>Product ID: ${productId}</p>`);
});

app.listen(PORT, () => {
  console.log(`Server is running at http://localhost:${PORT}`);
});
  • /products/:productId?: :productId is optional, meaning the route will match with or without the productId.
  • req.params.productId || 'default': If no productId is provided, 'default' will be used instead.

Output: Accessing http://localhost:3000/products/123 will display

Route-Parameters-in-Express
Route Parameters

Accessing http://localhost:3000/products/ will display

Product Page
Product ID: default

3. Multiple Route Parameters

Express allows you to define multiple route parameters in a single route. You can capture several dynamic values from the URL by adding multiple colon-prefixed parameters.

JavaScript
const express = require('express');
const app = express();
const PORT = 3000;

app.get('/posts/:category/:postId', (req, res) => {
    const category = req.params.category;
    const postId = req.params.postId;
    res.send(`<h1>Post</h1><p>Category: ${category}, Post ID: ${postId}</p>`);
});

app.listen(PORT, () => {
    console.log(`Server is running at http://localhost:${PORT}`);
});
  • /posts/:category/:postId: The route captures both category and postId from the URL.
  • req.params.category and req.params.postId: Access the captured values for use in the handler.

Output Accessing http://localhost:3000/posts/tech/456 will display

Post-
Multiple Route Parameters

Best Practices for Handling Route Parameters

  • Use Descriptive Parameter Names: Choose clear and meaningful names for route parameters to enhance code readability and maintainability.
  • Validate Parameter Values: Implement validation to ensure that the captured parameter values meet the expected format and constraints.
  • Handle Missing Parameters Gracefully: Provide default values or appropriate error messages when optional parameters are absent.

Next Article

Similar Reads

three90RightbarBannerImg