Loading

Quipoin Menu

Learn • Practice • Grow

express-js / Custom Middleware
tutorial

Custom Middleware

While built-in middleware covers common needs, real applications often require custom logic. Express makes it easy to create your own middleware functions. Additionally, there's a rich ecosystem of third-party middleware you can install via npm.

Custom Middleware

Creating custom middleware is simple – it's just a function that takes `req`, `res`, and `next`. Here are some practical examples:

1. Logger Middleware
<!-- Custom logger middleware -->
const logger = (req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  next();
};

app.use(logger);

2. Authentication Check Middleware
const requireAuth = (req, res, next) => {
  const token = req.headers.authorization;
 
  if (!token) {
    return res.status(401).json({ error: 'No token provided' });
  }
 
  <!-- Verify token (simplified) -->
  if (token !== 'secret-token') {
    return res.status(403).json({ error: 'Invalid token' });
  }
 
  <!-- Add user info to request -->
  req.user = { id: 1, name: 'John' };
  next();
};

<!-- Protect specific routes -->
app.get('/profile', requireAuth, (req, res) => {
  res.json({ user: req.user });
});

3. Request Timer Middleware
const requestTimer = (req, res, next) => {
  req.startTime = Date.now();
 
  <!-- Override res.end to log duration -->
  const originalEnd = res.end;
  res.end = function(...) {
    const duration = Date.now() - req.startTime;
    console.log(`Request took ${duration}ms`);
    originalEnd.apply(res, arguments);
  };
 
  next();
};

app.use(requestTimer);

Third-party Middleware

The npm ecosystem has many useful middleware packages. Here are two essential ones:

1. body-parser
(Note: body-parser is now built into Express, but some legacy apps still use it)
npm install body-parser

const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

2. cors
CORS (Cross-Origin Resource Sharing) allows your API to be accessed from different domains.
npm install cors

const cors = require('cors');

<!-- Enable all CORS requests -->
app.use(cors());

<!-- Or configure specific options -->
app.use(cors({
  origin: 'https://myapp.com',
  optionsSuccessStatus: 200
}));

Two Minute Drill

  • Custom middleware are just functions with `(req, res, next)` signature.
  • Use custom middleware for logging, authentication, validation, etc.
  • Third-party middleware like `cors` extends Express functionality.
  • `body-parser` is now built into Express (use `express.json()` instead).
  • Middleware can modify `req` and `res` objects to pass data to subsequent handlers.

Need more clarification?

Drop us an email at career@quipoinfotech.com