Table of contents
1.
Introduction
2.
What is Body-parser in Node.js?
3.
Features of Body-parser
4.
Installation  
5.
Usage of Body-parser
5.1.
Parsing JSON Data
5.2.
Parsing URL-encoded Data
5.3.
Handling Raw Data
6.
Steps to Set Up a Body-parser Module
6.1.
Integrate Body-parser into Your Application
6.2.
Example of Full Setup
7.
Different Types of Body Parsers  
7.1.
1. JSON Body Parser  
7.2.
2. URL-Encoded Body Parser  
7.3.
3. Text Body Parser  
7.4.
4. Raw Body Parser  
8.
Frequently Asked Questions
8.1.
What is the purpose of the Body-parser module?
8.2.
How can I handle JSON data in my Node.js application?
8.3.
Can I use Body-parser for form submissions?
9.
Conclusion
Last Updated: Jan 25, 2025
Medium

Body-parser Middleware in Node.js

Author Gaurav Gandhi
0 upvote
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?

Introduction

Body-parser middleware in Node.js is a tool that helps developers handle data sent by users in HTTP requests. It is mainly used to process data like JSON, text, or form submissions. This makes it easier to work with incoming data in web applications, especially when building APIs or handling user input.

Body-parser Middleware in Node.js

In this article, you will learn about the syntax of body-parser middleware, its benefits, and how to use it step by step in your Node.js projects.

What is Body-parser in Node.js?

The Body-parser module is a middleware in Node.js used to parse incoming request bodies in a middleware before your handlers, making the data easily accessible in your application. It allows you to parse data from various formats like JSON, URL-encoded data, and raw text.

Without the body-parser module, handling data from POST requests would require additional work, such as manually parsing JSON or form data. The Body-parser module streamlines this process by automatically parsing the data based on the request's content type and making it available to your application in a structured manner.

Features of Body-parser

The Body-parser module comes with a range of features that simplify working with incoming data in Node.js applications:
 

  1. Parsing JSON Data: Body-parser can parse incoming JSON data from the request body, which is commonly used in API requests.
     
  2. Parsing URL-encoded Data: It can also parse data that comes in the form of URL-encoded data, commonly used in HTML form submissions.
     
  3. Support for Raw Data: If you are working with binary data or need raw data, Body-parser can handle it.
     
  4. Middleware for Handling Data: It works as middleware in the request-response cycle, parsing incoming data before your route handlers can access it.
     
  5. Configurable Options: The Body-parser module provides several options for configuring data parsing, such as limiting the size of incoming data or handling errors.

Installation  

To use a body parser in your Node.js application, you first need to install it. The most commonly used body parser is the `body-parser` package, which is now included by default in Express.js (a popular Node.js framework). However, if you’re using an older version of Express or want to understand how it works independently, you can install it separately.  

Here’s how you can install the `body-parser` package:  


1. Step 1: Set Up a Node.js Project  

If you don’t already have a Node.js project, create one. Open your terminal & run the following commands:  

   mkdir my-node-app
   cd my-node-app
   npm init -y


This will create a new folder named `my-node-app` & initialize a `package.json` file, which is necessary for managing dependencies.  


2. Step 2: Install the `body-parser` Package  

Now, install the `body-parser` package using npm (Node Package Manager). Run the following command in your terminal:  

   npm install body-parser


This will download & add the `body-parser` package to your project’s `node_modules` folder.  


3. Step 3: Include `body-parser` in Your Project  

Once installed, you need to require & use it in your Node.js application. Here’s a basic example of how to set it up:  

   // Import required modules
   const express = require('express');
   const bodyParser = require('body-parser');

   // Create an Express app
   const app = express();

   // Use body-parser middleware
   app.use(bodyParser.json()); // Parse JSON data
   app.use(bodyParser.urlencoded({ extended: true })); // Parse URL-encoded data

   // Define a route to handle POST requests
   app.post('/submit', (req, res) => {
     const data = req.body; // Access parsed data
     console.log(data);
     res.send('Data received!');
   });

   // Start the server
   const PORT = 3000;
   app.listen(PORT, () => {
     console.log(`Server is running on http://localhost:${PORT}`);
   });


In this Code:  

  • We first import the `express` & `body-parser` modules.  
     
  • Then, we create an Express app using `express()`.  
     
  • The `app.use(bodyParser.json())` line tells the app to parse incoming JSON data.  
     
  • The `app.use(bodyParser.urlencoded({ extended: true }))` line is used to parse URL-encoded data (like form submissions).  
     
  • We define a route (`/submit`) to handle POST requests. The `req.body` object contains the parsed data sent by the client.  
     
  • Finally, the server listens on port 3000.  
     

4. Step 4: Test the Setup  

To test the setup, you can use tools like Postman or curl to send a POST request to `http://localhost:3000/submit` with some JSON or form data. For example: 

   {
     "name": "John Doe",
     "email": "john@example.com"
   }


If everything is set up correctly, the server will log the received data & send a response saying "Data received!".  

Usage of Body-parser

Using the Body-parser module in Node.js is quite simple. Here’s how to use it to parse different types of incoming data:

Parsing JSON Data

To handle JSON payloads in POST requests, you would use bodyParser.json().

Example:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());

app.post('/json', (req, res) => {
    console.log(req.body); // Access the parsed JSON data
    res.send('Received JSON data!');
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});


Explanation:

In this example, we set up a POST route at /json. The incoming request body, which is expected to be in JSON format, will be parsed by bodyParser.json(). When you send a JSON request, the server will log the parsed body.

Parsing URL-encoded Data

If the request body contains data from an HTML form (like text inputs), you would use bodyParser.urlencoded().

Example:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.post('/form', (req, res) => {
    console.log(req.body); // Access the parsed form data
    res.send('Received URL-encoded data!');
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});


Explanation

This example uses bodyParser.urlencoded() to handle URL-encoded form data. The extended: true option allows for rich objects and arrays to be encoded into the URL-encoded format.

Handling Raw Data

For binary data or raw text, you can use bodyParser.raw().

Example:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.raw({ type: 'application/octet-stream' }));

app.post('/raw', (req, res) => {
    console.log(req.body); // Access the raw data
    res.send('Received raw data!');
});
app.listen(3000, () => {
    console.log('Server is running on port 3000');
});


Explanation: This example is for handling raw binary data. The bodyParser.raw() method is used to parse the raw content, and you can specify the content type (e.g., application/octet-stream).

Steps to Set Up a Body-parser Module

Now that we know how to use the Body-parser module, let’s go through the steps required to set it up in a Node.js application.

Install the Body-parser Module

Start by installing Body-parser using npm.
Run this command in your project directory:

npm install body-parser


This will install the Body-parser module and add it to your project’s dependencies.

Set Up Express: Since the Body-parser module works as middleware in Express.js, make sure you have Express installed.

Install Express by running:

npm install express

Integrate Body-parser into Your Application

Once you have the necessary modules installed, require them in your Node.js file and set up Body-parser as middleware.

Example of Full Setup

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// Use Body-parser middleware
app.use(bodyParser.json()); // For parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // For parsing application/x-www-form-urlencoded
app.post('/data', (req, res) => {
    console.log(req.body); // Access the parsed data
    res.send('Data received!');
});

app.listen(3000, () => {
    console.log('Server running on port 3000');
});


Explanation

In this setup, we’re using Body-parser to parse both JSON data and URL-encoded data. When a POST request is sent to /data, the body data will be parsed automatically, making it easy to access via req.body.

Different Types of Body Parsers  

The `body-parser` package provides several methods to parse different types of data sent in the request body. Each method is designed to handle a specific format of data. Let’s take a look at the most commonly used types:  

1. JSON Body Parser  

This is used to parse JSON data sent in the request body. JSON (JavaScript Object Notation) is a lightweight data format commonly used in APIs.  

Example:  

   const express = require('express');
   const bodyParser = require('body-parser');
   const app = express();

   // Use JSON body parser
   app.use(bodyParser.json());

   // Route to handle JSON data
   app.post('/json', (req, res) => {
     const jsonData = req.body;
     console.log('Received JSON data:', jsonData);
     res.json({ message: 'JSON data received!', data: jsonData });
   });

   const PORT = 3000;
   app.listen(PORT, () => {
     console.log(`Server is running on http://localhost:${PORT}`);
   });


How It Works:  

  • When a client sends a POST request with JSON data, the `body-parser` middleware parses it & makes it available in `req.body`.  
     
  • For example, if the client sends `{ "name": "Alice", "age": 25 }`, the server will log this data & respond with a JSON message.  

2. URL-Encoded Body Parser  

This is used to parse data sent from HTML forms. The data is typically encoded in the `application/x-www-form-urlencoded` format.  

Example:  

   const express = require('express');
   const bodyParser = require('body-parser');
   const app = express();
   
   // Use URL-encoded body parser
   app.use(bodyParser.urlencoded({ extended: true }));

   // Route to handle form data
   app.post('/form', (req, res) => {
     const formData = req.body;
     console.log('Received form data:', formData);
     res.send('Form data received!');
   });

   const PORT = 3000;
   app.listen(PORT, () => {
     console.log(`Server is running on http://localhost:${PORT}`);
   });


How It Works:  

  • When a form is submitted, the data is sent as key-value pairs (e.g., `name=Alice&age=25`).  
     
  • The `body-parser` middleware decodes this data & makes it available in `req.body`.  

3. Text Body Parser  

This is used to parse plain text data sent in the request body. It’s less common but useful for specific use cases.  

Example:  

   const express = require('express');
   const bodyParser = require('body-parser');
   const app = express();

   // Use text body parser
   app.use(bodyParser.text());

   // Route to handle plain text data
   app.post('/text', (req, res) => {
     const textData = req.body;
     console.log('Received text data:', textData);
     res.send('Text data received!');
   });

   const PORT = 3000;
   app.listen(PORT, () => {
     console.log(`Server is running on http://localhost:${PORT}`);
   });


How It Works: If the client sends plain text (e.g., `Hello, World!`), the `body-parser` middleware makes it available in `req.body`.  

4. Raw Body Parser  

This is used to parse raw binary data or data in its original form. It’s often used for handling file uploads or custom data formats.  

Example:  

   const express = require('express');
   const bodyParser = require('body-parser');
   const app = express();

   // Use raw body parser
   app.use(bodyParser.raw({ type: 'application/octet-stream' }));

   // Route to handle raw data
   app.post('/raw', (req, res) => {
     const rawData = req.body;
     console.log('Received raw data:', rawData);
     res.send('Raw data received!');
   });

   const PORT = 3000;
   app.listen(PORT, () => {
     console.log(`Server is running on http://localhost:${PORT}`);
   });


How It Works: The raw data is stored in a buffer, which can be processed further as needed. 

Frequently Asked Questions

What is the purpose of the Body-parser module?

The Body-parser module is used to parse incoming request bodies in Node.js applications, making the data easy to access and process in your routes.

How can I handle JSON data in my Node.js application?

You can use bodyParser.json() middleware to automatically parse incoming JSON data, making it available through req.body.

Can I use Body-parser for form submissions?

Yes, you can use bodyParser.urlencoded() to handle form submissions, especially those that use the application/x-www-form-urlencoded content type.

Conclusion

The Body-parser module in Node.js is a powerful tool that helps simplify the process of handling incoming request data. Whether you're working with JSON, URL-encoded data, or raw binary data, Body-parser makes it easy to manage and process that data. By setting it up in your web application, you can handle a wide variety of request formats with minimal effort.

Live masterclass