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.
→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter
→ JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025