在阅读了这两本书后,我仍然无法理解它,可能是语言差异请帮助澄清。
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()
我知道这不是代码问题,但我提前感谢任何能够列出主要差异的人。
那么我为什么要使用body-parser(我必须分开安装)而不是总是使用express.urlencoded()
原因很简单,它不适用于旧版本的快递
此中间件在Express v4.16.0及更高版本中可用。
如果您使用的是最新版本,则几乎没有理由。
body-parser
提供了一些额外的工具,如bodyParser.raw([options])
或bodyParser.text([options])
几乎没有人使用(从未见过自己使用过)。