Join the AI Workshop and learn to build real-world apps with AI. A hands-on, practical program to level up your skills.
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 needed to expose the raw body (unparsed) to an endpoint, and I couldn’t figure out how to do that 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 choice.
Except perhaps creating a different server just for the Stripe webhook I wanted to handle.