Skip to content

How to get both parsed body and raw body in Express

Find out how to get both parsed body and raw body in Express with `body-parser`

In one application I’m building, I had this problem.

Using Express, I can import body-parser to parse the body as JSON:

import bodyParser from 'body-parser'
app.use(bodyParser.json())

However to integrate with the Stripe payments API I had the need to expose the raw body (not parsed) into an endpoint, and I couldn’t figure out how to do it, while still parsing the body as JSON.

This did the trick:

app.use(bodyParser.json({
  verify: (req, res, buf) => {
    req.rawBody = buf
  }
}))

Now the raw body is available on req.rawBody and the JSON parsed data is available on req.body.

From the body-parser GitHub I found that this doubles the RAM usage for every request, but since I need this functionality, I have no other way.

Except perhaps creating a different server just for the Stripe webhook I wanted to handle.


→ Get my Node.js Handbook

I wrote 21 books to help you become a better developer:

  • HTML Handbook
  • Next.js Pages Router Handbook
  • Alpine.js Handbook
  • HTMX Handbook
  • TypeScript Handbook
  • React Handbook
  • SQL Handbook
  • Git Cheat Sheet
  • Laravel Handbook
  • Express Handbook
  • Swift Handbook
  • Go Handbook
  • PHP Handbook
  • Python Handbook
  • Linux Commands Handbook
  • C Handbook
  • JavaScript Handbook
  • Svelte Handbook
  • CSS Handbook
  • Node.js Handbook
  • Vue Handbook
...download them all now!

Related posts that talk about node: