Loading...

Understanding Middleware in Express.js – A Complete Guide with Examples

Jeevan Singh

25 September, 2025

Express.js Logo


When working with Node.js and Express, you’ll frequently come across the term middleware. Middleware is at the heart of Express applications, making it possible to handle requests, responses, errors, authentication, logging, and much more. In this blog, we’ll break down what middleware is, why it’s important, and how you can use it effectively in your Node.js projects.

What is Middleware in Express?

In simple terms, middleware functions are functions that have access to the request (req), response (res), and the next function in the Express request-response cycle. They sit between the request and response and can perform tasks like:

  • Logging requests
  • Checking authentication
  • Validating user input
  • Handling errors
  • Modifying request/response objects

The next() function is crucial — it passes control to the next middleware in the stack. Without it, the request may hang.

Types of Middleware

1. Built-in Middleware

Express provides some middleware out of the box, such as:

app.use(express.json());      // Parse JSON bodies
app.use(express.urlencoded({ extended: true })); // Parse URL-encoded data

These are essential for handling form data and JSON payloads in modern APIs.

2. Third-party Middleware

Developers often use third-party middleware from npm to simplify common tasks:

const morgan = require('morgan');
const cors = require('cors');

app.use(morgan('dev'));  // Logging requests
app.use(cors());         // Enable Cross-Origin Resource Sharing

This reduces boilerplate and improves maintainability.

3. Custom Middleware

You can also create your own middleware functions. For example, a simple logger:

function myLogger(req, res, next) {
  console.log(`Request made to: ${req.url}`);
  next(); // Pass control to the next middleware
}

app.use(myLogger);

Custom middleware is where the true power of Express shines, letting you control the flow of requests.

Middleware Use Cases

1. Authentication Middleware

You can protect routes by checking for a valid token before allowing access:

function authMiddleware(req, res, next) {
  const token = req.headers['authorization'];
  if (token === 'my-secret-token') {
    next();
  } else {
    res.status(401).json({ message: 'Unauthorized' });
  }
}

app.get('/dashboard', authMiddleware, (req, res) => {
  res.send('Welcome to your dashboard!');
});

2. Error Handling Middleware

Special middleware for error handling has four parameters: (err, req, res, next).

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

This ensures errors are caught and handled gracefully.

Best Practices

  • Always call next() unless you’re ending the request.
  • Use route-specific middleware for sensitive logic (like authentication).
  • Organize middleware into separate files for cleaner code.
  • Place error-handling middleware at the end of the middleware stack.

Conclusion

Middleware is one of the most powerful concepts in Express. By mastering it, you can add logging, authentication, validation, and error handling seamlessly into your applications. Whether using built-in, third-party, or custom middleware, understanding how it works will make you a far more effective Node.js developer.

RECENT POSTS

How Layer 2 Solutions Are Making Ethereum Faster and Cheaper

How Layer 2 Solutions Are Making Ethereum Faster and Cheaper Afzal Khan 8 October, 2025 Ethereum revolutionized blockchain by enabling smart contracts, but its popularity also led to high gas fees and slower transactions. This is where Layer 2 solutions come in — scaling Ethereum without compromising its security or decentralization. What Are Layer 2 […]

The Revolution Beyond Crypto: Top Blockchain Applications and Trends for 2025

Understanding Gas Fees in Blockchain – A Developer’s Guide Afzal Khan 8 October, 2025 If you’ve ever sent a crypto transaction, you’ve probably noticed something called a “gas fee.” Whether you’re building a DApp or simply trading tokens, understanding gas fees is essential. In this guide, we’ll break down what gas fees are, how they […]

Boosting Backend Development with NestJS and Node.js in 2025

Boosting Backend Development with NestJS and Node.js in 2025 Shubham Anand 08-Oct-2025 In modern backend development, combining NestJS with Node.js creates a powerful, scalable, and maintainable solution. NestJS is a progressive Node.js framework built with TypeScript that provides a structured architecture inspired by Angular. Meanwhile, Node.js offers the event-driven runtime to execute JavaScript efficiently on […]

How HR Chatbots Are Redefining Employee Experience

How HR Chatbots Are Redefining Employee Experience Khushi Kaushik 6 oct, 2025 In the age of digital transformation, HR chatbots are reshaping how employees interact with their organizations. These intelligent, AI-powered assistants are designed to simplify communication, automate repetitive tasks, and provide employees with instant access to HR services — anytime, anywhere. Instant Support and […]

Automating Deployments: CI/CD on AWS ECS with GitHub Actions

Learn how to build a fully automated CI/CD pipeline on AWS ECS using GitHub Actions. Discover tips, best practices, and strategies to deploy faster, safer, and smarter. Author: Charu RajputDate: 29 Sep 2025 Introduction: Picture this: your team pushes a new feature, and within minutes, it’s live in production without downtime or manual intervention. Sounds […]

POPULAR TAG

POPULAR CATEGORIES