【发布时间】:2019-04-15 15:04:52
【问题描述】:
读完这两篇文章后,我仍然无法理解, 可能是语言差异,请帮助澄清。
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()
我知道这不是代码问题,但我提前感谢任何能列出主要区别的人。
【问题讨论】:
标签: javascript node.js express urlencode body-parser