簡體   English   中英

node的bodyParser和express的urlencoded中間件有什么區別?

[英]What is the difference between node's bodyParser and express's urlencoded middleware?

讀完這兩個書后,我仍然無法解決問題,可能是語言差異,請幫助澄清。

express.urlencoded()

返回僅解析urlencoded主體並且僅查看Content-Type標頭與type選項匹配的請求的中間件。 該解析器僅接受主體的UTF-8編碼,並支持gzip和deflate編碼的自動填充。

body-parser中間件

在處理程序之前,在中間件中解析傳入的請求主體,該處理程序在req.body屬性下可用。

我了解express.urlencoded基於Nodejs body-parser 和兩個頁面,

https://expressjs.com/en/api.html#express.urlencoded

https://expressjs.com/en/resources/middleware/body-parser.html

甚至說同樣的警告提示:

由於req.body的形狀基於用戶控制的輸入,因此該對象中的所有屬性和值都是不可信的,應在可信之前進行驗證。 例如,req.body.foo.toString()可能以多種方式失敗,例如foo可能不存在或可能不是字符串,而toString可能不是函數,而是字符串或其他用戶輸入。

但最終兩者都給了我一個帶有在請求正文對象中發送的參數的req.body 所以為什么我應該使用body-parser(我必須分開安裝)而不是始終使用express.urlencoded()

我知道這不是代碼問題,但在此先感謝任何可以列出主要區別的人。

所以為什么我應該使用body-parser(我必須分開安裝)而不是始終使用express.urlencoded()

出於簡單原因,它在舊版的Express中不可用

Express v4.16.0及更高版本中提供了此中間件。

如果您使用的是最新版本,則幾乎沒有理由這么做。

body-parser提供了一些額外的實用程序,例如bodyParser.raw([options])bodyParser.text([options]) ,幾乎沒有人使用(從未見過自己使用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM