使用Express 存取Node.js 中的完整請求正文
在Node.js 中,利用Express 處理POST 請求並存取其正文可能會帶來挑戰。提供的程式碼無法檢索整個請求正文,從而導致異常。本文探討了此問題的解決方案,並解決了在不使用express.bodyParser()的情況下獲取原始請求的可能性。
使用 Express 中間件
從 Express v4 開始。從 16 開始,內建的 JSON 中間件可以有效地將請求正文解析為 JSON:
app.use(express.json())
該中間件自動將正文內容解析為可透過 req.body 屬性存取的 JavaScript 物件。例如:
app.post('/test', (req, res) => { res.json({ requestBody: req.body }) })
在沒有中間件的情況下處理原始請求
要在沒有中間件的情況下獲取原始請求,可以採用另一種方法:
使用request.rawBody 屬性:
此屬性提供對原始的、未解析的請求正文的存取。但是,它需要將 bodyParser 中間件中的 limit 選項設定為大於正文預期長度的值。
使用自訂中間件:
可以定義自訂中間件來攔截傳入請求並擷取原始正文:
app.use((req, res, next) => { req.rawBody = ''; req.on('data', (chunk) => { req.rawBody += chunk; }); req.on('end', () => { next(); }); });
要注意的是,手動處理原始正文更加複雜,可能會導致效能開銷。通常建議使用中間件,因為它簡單且高效。
以上是如何使用 Express 存取 Node.js 中的完整請求正文:中間件和原始請求處理指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!