How to get both parsed body and raw body in Express
New Courses Coming Soon
Join the waiting lists
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.
Here is how can I help you:
- COURSES where I teach everything I know
- CODING BOOTCAMP cohort course - next edition in 2025
- BOOKS 16 coding ebooks you can download for free on JS Python C PHP and lots more
- Follow me on X