node的bodyParser和express的urlencoded中间件有什么区别?

问题描述 投票:0回答:1

在阅读了这两本书后,我仍然无法理解它,可能是语言差异请帮助澄清。

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与params发送请求身体对象。那么我为什么要使用body-parser(我必须分开安装)而不是总是使用express.urlencoded()

我知道这不是代码问题,但我提前感谢任何能够列出主要差异的人。

javascript node.js express urlencode body-parser
1个回答
1
投票

那么我为什么要使用body-parser(我必须分开安装)而不是总是使用express.urlencoded()

原因很简单,它不适用于旧版本的快递

此中间件在Express v4.16.0及更高版本中可用。

如果您使用的是最新版本,则几乎没有理由。

body-parser提供了一些额外的工具,如bodyParser.raw([options])bodyParser.text([options])几乎没有人使用(从未见过自己使用过)。

© www.soinside.com 2019 - 2024. All rights reserved.