微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

`app.use(bodyParser.json())`做什么?

对于:
bodyParser.urlencoded({extended: ...})

我的研究告诉我,如果扩展:true,那么你可以解析嵌套对象,或者通常是任何类型.但是,如果设置extended:false,则只能解析字符串或数组.但是什么呢

app.use(bodyParser.json())

是否正确?我的意思是,是的…我知道文档提到它解析json.但我仍然感到困惑.我注意到设置扩展的应用程序:true不要使用bodyParser.json().但扩展的应用程序:false倾向于使用bodyParser.json().为什么是这样?最后,两个应用都能够解析json.

其次是推荐的方法

解决方法

简而言之

身体解析器提取传入请求流的整个身体部分,并将其暴露在req.body上,使其更容易接触.你本身不需要它,因为你可以自己做所有的事情.然而,它很可能会做你想要的,并为您节省麻烦.

说明

body-parser给你一个中间件,它使用nodejs / zlib来解压缩传入的请求数据,如果它是压缩的,并且stream-utils / raw-body等待“解析它”之前的请求体的完整的原始内容(这意味着如果你不会使用请求体,你只是浪费了一些时间).

使用原始内容后,身体解析器将使用四种策略之一进行解析,具体取决于您决定使用的特定中间件:

bodyParser.raw():实际上并不解析正文,而是刚刚在缓冲区req.body上显示缓存的内容.

bodyParser.text():以纯文本形式读取缓冲区,并将生成的字符串暴露在req.body上.

bodyParser.urlencoded():将文本解析为URL编码数据(浏览器倾向于将表单数据从常规表单设置为POST),并将结果对象(包含键和值)暴露在req.body上.

bodyParser.json():将文本解析为JSON,并将结果对象公开在req.body上.

只有将req.body设置为期望的内容,它才会调用堆栈中的下一个中间件,然后可以访问请求数据,而无需考虑如何解压缩并解析它.

bodyParser.urlencoded({extended:true})
现在,这是中间件在express中的认值.那么这个中间件有什么用呢?
在这里,当你点火POST请求时,它将被编码,只能包含{key:value}对象的对象形式,或只能包含一个简单的json格式的字符串.

bodyParser.urlencoded({extended:false})何时,我们将此值更改为false,我们清楚地表示,url可以包含url中的任何格式/类型的文件.所以准备好了因此,它使用qs库来解码url.

原文地址:https://www.jb51.cc/js/151265.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐