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.
THE VALLEY OF CODE
THE WEB DEVELOPER's MANUAL
You might be interested in those things I do:
- Learn to code in THE VALLEY OF CODE, your your web development manual
- Find a ton of Web Development projects to learn modern tech stacks in practice in THE VALLEY OF CODE PRO
- I wrote 16 books for beginner software developers, DOWNLOAD THEM NOW
- Every year I organize a hands-on cohort course coding BOOTCAMP to teach you how to build a complex, modern Web Application in practice (next edition February-March-April-May 2024)
- Learn how to start a solopreneur business on the Internet with SOLO LAB (next edition in 2024)
- Find me on X