首頁 > web前端 > js教程 > 如何使用 Express 存取 Node.js 中的完整請求正文:中間件和原始請求處理指南

如何使用 Express 存取 Node.js 中的完整請求正文:中間件和原始請求處理指南

DDD
發布: 2024-10-29 05:41:30
原創
604 人瀏覽過

How to Access the Full Request Body in Node.js with Express: A Guide to Middleware and Raw Request Handling

使用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 })
})
登入後複製

在沒有中間件的情況下處理原始請求

要在沒有中間件的情況下獲取原始請求,可以採用另一種方法:

  1. 使用request.rawBody 屬性:

    此屬性提供對原始的、未解析的請求正文的存取。但是,它需要將 bodyParser 中間件中的 limit 選項設定為大於正文預期長度的值。

  2. 使用自訂中間件:

    可以定義自訂中間件來攔截傳入請求並擷取原始正文:

    app.use((req, res, next) => {
      req.rawBody = '';
      req.on('data', (chunk) => { req.rawBody += chunk; });
      req.on('end', () => { next(); });
    });
    登入後複製

要注意的是,手動處理原始正文更加複雜,可能會導致效能開銷。通常建議使用中間件,因為它簡單且高效。

以上是如何使用 Express 存取 Node.js 中的完整請求正文:中間件和原始請求處理指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板