/

在Express中如何獲取解析後的body和原始body

在Express中如何獲取解析後的body和原始body

了解如何在Express中使用body-parser獲取解析後的body和原始body。

在我正在構建的某個應用程序中,我遇到了這個問題。

使用Express,我可以導入body-parser來將body解析為JSON:

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

然而,為了與Stripe支付API集成,我需要將原始body(未解析)暴露給一個端點,但我無法找出如何在解析body為JSON的同時實現這一點。

下面的代碼可以解決這個問題:

1
2
3
4
5
app.use(bodyParser.json({
verify: (req, res, buf) => {
req.rawBody = buf
}
}))

現在可以通過req.rawBody獲取原始body,並且通過req.body獲取JSON解析後的數據。

body-parser的GitHub上我發現,這將使每次請求的RAM使用量翻倍,但由於我需要這個功能,我別無選擇。

除非為我想處理的Stripe webhook創建一個不同的伺服器。

tags: [“Express”, “body-parser”, “Stripe”, “JSON”, “webhook”]