Node.js Middleware

πŸš€ Node.js Middleware (Express.js Middleware Explained)

Middleware is one of the core features of Express.js.
It allows you to run functions between the request and the response.


βœ… What is Middleware?

Middleware functions are functions that have access to:

  • req β†’ Request object

  • res β†’ Response object

  • next β†’ Function to pass control to next middleware

πŸ“Œ Syntax



 


🧱 Types of Middleware in Express.js

Express supports many types:

  1. Application-Level Middleware

  2. Router-Level Middleware

  3. Built-In Middleware

  4. Third-Party Middleware

  5. Error-Handling Middleware

Let’s learn each one.


⭐ 1. Application-Level Middleware

Runs for every request or specific routes.

Example: log every request



 

Apply to a specific route:



 


⭐ 2. Router-Level Middleware

Works exactly like application middleware but applied on a Router.


 


⭐ 3. Built-in Middleware

Express provides some built-in middleware:

βœ” Parse JSON



 

βœ” Parse URL-encoded form data



 

βœ” Serve Static Files



 


⭐ 4. Third-Party Middleware

These are installed from npm.

πŸ”Ή Example: morgan (HTTP request logger)

npm install morgan


 


πŸ”Ή Example: cors (Enable CORS)

npm install cors


 


πŸ”Ή Example: helmet (Security Headers)

npm install helmet


 


⭐ 5. Error-Handling Middleware

Error middleware has 4 arguments:



 

Example:



 

Once thrown β†’ automatically sent to error middleware.


🧬 Middleware Order Matters

Middleware is executed in the order it is defined.



 

Order =
1️⃣ middleware1
2️⃣ middleware2
3️⃣ route


πŸ” Multiple Middleware in One Route


 


πŸ” Example: Authentication Middleware


 


πŸ“ Organizing Middleware in a Folder

Create /middleware/auth.js:



 

Use it:



 


πŸ“˜ When to Use Middleware?

Use middleware for:

βœ” Authentication
βœ” Logging
βœ” Validation
βœ” Parsing request body
βœ” Error handling
βœ” Security
βœ” Rate limiting
βœ” Serving static files


🎯 Final Summary

Middleware is essential in Express.js because it:

  • Controls request flow

  • Adds functionality (logging, auth, security)

  • Keeps code modular

  • Helps structure large applications

You may also like...