What is the role of middleware in Express.js, and how do you create custom middleware?

Middleware functions in Express.js process requests before reaching the final route handler. You can create custom middleware to add functionalities like logging, authentication, etc. Example of custom middleware:

const express = require('express');
const app = express();

const loggerMiddleware = (req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next(); // Pass control to the next middleware
};

app.use(loggerMiddleware); // Use custom middleware