How to Parse Request Body in Node.js: Simple Guide
In Node.js, you parse the request body by using middleware like
express.json() for JSON data or express.urlencoded() for form data. These middlewares read the incoming data and make it available on req.body inside your route handlers.Syntax
To parse JSON or URL-encoded form data in Node.js with Express, you use middleware functions that process the incoming request body before your route handlers.
express.json()parses JSON payloads.express.urlencoded({ extended: true })parses URL-encoded form data.- After parsing, the data is accessible via
req.body.
javascript
import express from 'express'; const app = express(); // Middleware to parse JSON bodies app.use(express.json()); // Middleware to parse URL-encoded bodies app.use(express.urlencoded({ extended: true })); app.post('/data', (req, res) => { // Access parsed data here console.log(req.body); res.send('Data received'); });
Example
This example shows a simple Express server that parses JSON request bodies and responds with the received data.
javascript
import express from 'express'; const app = express(); const port = 3000; // Parse JSON bodies app.use(express.json()); app.post('/submit', (req, res) => { // req.body contains the parsed JSON data res.json({ received: req.body }); }); app.listen(port, () => { console.log(`Server running on http://localhost:${port}`); });
Output
Server running on http://localhost:3000
Common Pitfalls
- Not using any body-parsing middleware causes
req.bodyto beundefined. - Using
express.urlencoded()withoutextended: truelimits parsing capabilities. - Parsing large bodies without limits can cause performance issues; set size limits in middleware options.
- Trying to parse JSON without
express.json()will fail silently.
javascript
import express from 'express'; const app = express(); // Wrong: No middleware, req.body will be undefined app.post('/wrong', (req, res) => { console.log(req.body); // undefined res.send('No body parsed'); }); // Right: Use middleware to parse JSON app.use(express.json()); app.post('/right', (req, res) => { console.log(req.body); // Parsed JSON object res.send('Body parsed'); });
Quick Reference
Summary of middleware to parse request bodies in Node.js with Express:
| Middleware | Purpose | Usage Example |
|---|---|---|
| express.json() | Parses JSON request bodies | app.use(express.json()) |
| express.urlencoded({ extended: true }) | Parses URL-encoded form data | app.use(express.urlencoded({ extended: true })) |
| Limit option | Limits size of parsed body | app.use(express.json({ limit: '1mb' })) |
Key Takeaways
Always use body-parsing middleware like express.json() to access request body data.
Use express.urlencoded({ extended: true }) to parse form submissions.
Without middleware, req.body will be undefined.
Set size limits in middleware to protect your server from large payloads.
Access parsed data via req.body inside your route handlers.