Custom Middleware in ExpressJS

Learn via video courses
Topics Covered

Overview

Express.js is a widely popular web framework for Node.js. It provides a wide range of functionalities and tools to create web applications in Node.js. Express.js uses middleware to execute certain functions during the HTTP request-response cycle. Middleware functions are invoked in sequence and can modify the request and response objects before the next middleware function is called.

Introduction

Middleware is a function that sits between the server and the client and modifies the request and response objects in some way. Middleware can be used for a variety of tasks, such as logging, authentication, handling errors, and more. Middleware functions are added to the Express.js application using the use() method.

Express.js provides built-in middleware functions, such as express.static() for serving static files and express.json() for parsing JSON data. However, developers can create their own custom middleware functions to add custom functionality to the Express.js application.

What Is Custom Middleware?

Custom middleware is a middleware function that is created by the developer to add custom functionality to the Express.js application. Custom middleware can be used to perform a wide range of tasks such as authentication, logging, data validation, error handling, and more.

Custom middleware functions can be added to the Express.js application using the use() method. The use() method takes a function as an argument, which is the middleware function. The middleware function has access to the request and response objects, as well as the next() function, which is used to call the next middleware function in the sequence.

Analyzing an Express Middleware

In Express.js, middleware functions are used to handle requests and responses. Middleware functions can be used for a variety of tasks such as logging, authentication, data validation, error handling, and more. Express.js provides built-in middleware functions, such as express.static() for serving static files and express.json() for parsing JSON data. Developers can also create their own custom middleware functions to add custom functionality to their Express.js application.

Let's take a closer look at an existing middleware function in Express.js to better understand how it works. In the following code snippet, we will analyze a middleware function that logs the incoming requests to the server.

The above code adds a middleware function to the Express.js application using the use() method. The middleware function takes three arguments - req, res, and next. The req argument is the request object, which contains information about the incoming request. The res argument is the response object, which contains information about the outgoing response. The next argument is a function that is used to call the next middleware function in the sequence.

The middleware function logs the request method and URL using console.log() and then calls the next() function to pass control to the next middleware function in the sequence. The next() function is important because it tells Express.js to move on to the next middleware function in the sequence. If the next() function is not called, the request will be stuck and the response will not be sent back to the client.

It's important to note that middleware functions are executed in the order they are added to the application. This means that if multiple middleware functions are added, they will be executed in sequence. In the following example, we have two middleware functions that are added to the application. The first middleware function logs the incoming requests to the server, while the second middleware function adds a custom header to the response.

When a request is made to the server, the first middleware function will be executed first, followed by the second middleware function. The next() function is used to pass control from one middleware function to the next.

Creating a Custom Middleware

  1. Decide on the Middleware Functionality
    The first step in creating a custom middleware function is to decide on its functionality. This can be anything from authentication to data validation to logging, depending on your application's needs. It's important to have a clear idea of what the middleware function should do before starting to write code.
  2. Create the Middleware Function
    To create a custom middleware function, you simply need to define a function that takes three arguments - req, res, and next - and performs the desired functionality. Here's an example of a simple middleware function that logs the incoming requests to the server:

This middleware function logs the request method and URL using console.log() and then calls the next() function to pass control to the next middleware function in the sequence.
3. Add the Middleware Function to the Application
To add the middleware function to the Express.js application, you can use the use() method. Here's an example of how to add the logRequest middleware function to the application:

The above code creates a new instance of the Express.js application and defines the logRequest middleware function. The middleware function is then added to the application using the use() method.
4. Test the Middleware Function
Once the middleware function has been added to the application, you can test it by making a request to the server. In the following example, we make a request to the server and check the console output to verify that the logRequest middleware function is working as expected:

In this example, we create a new instance of the Express.js application and add the logRequest middleware function to it. We also define a route that sends a "Hello World!" message back to the client. When we start the server and make a request to it, we should see the request method and URL logged to the console.

Conclusion

  • Express.js uses middleware to execute certain functions during the HTTP request-response cycle.
  • Custom middleware is a middleware function created by the developer to add custom functionality to the Express.js application.
  • Middleware functions can be used for a variety of tasks, such as logging, authentication, data validation, error handling, etc.
  • Middleware functions are executed in the order they are added to the application.
  • The process to create a custom middleware function involves deciding on its functionality, creating the function, adding it to the application, and testing it.