`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.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...