猿问
下载APP

身体解析器对表达有什么作用?

身体解析器对表达有什么作用?

我不明白为什么我们需要body-parser在Express应用程序中,因为我们可以在不使用的情况下获取数据body-parser。它实际上做了什么以及如何做?



aluckdog
浏览 44回答 3
3回答

料青山看我应如是

是的,我们可以不用body-parser。当您不使用它时,您将获得原始请求,并且您的正文和标题不在请求参数的根对象中。您将不得不单独操纵所有字段。或者你可以使用body-parser,因为快递团队正在维护它。身体解析器可以为您做什么:它简化了请求。如何使用它:以下是示例:安装 npm install body-parser --save这个如何在express中使用body-parser:const express = require('express'),       app = express(),       bodyParser = require('body-parser');// support parsing of application/json type post dataapp.use(bodyParser.json());//support parsing of application/x-www-form-urlencoded post dataapp.use(bodyParser.urlencoded({ extended: true }));链接。https://github.com/expressjs/body-parser。然后,您可以在根请求对象中获取正文和标题。例app.post("/posturl",function(req,res,next){     console.log(req.body);     res.send("response");})

暮色呼如

了解请求正文收到POST或PUT请求时,请求正文可能对您的应用程序很重要。获取正文数据比访问请求标题要多一些。传递给处理程序的请求对象实现ReadableStream接口。就像任何其他流一样,可以在其他地方收听或传输此流。我们可以通过收听流的“数据”和“结束”事件来直接从流中获取数据。每个'data'事件中发出的块是一个Buffer。如果您知道它将是字符串数据,那么最好的做法是在数组中收集数据,然后在“结束”,连接并对其进行字符串化。let body = [];request.on('data', (chunk) => {   body.push(chunk);}).on('end', () => {   body = Buffer.concat(body).toString();   // at this point, `body` has the entire request body stored in it as a string});理解身体解析器根据其文件在处理程序之前在中间件中解析传入的请求主体,在req.body属性下可用。正如您在第一个示例中看到的那样,我们必须手动解析传入的请求流以提取正文。当存在多种不同类型的表单数据时,这变得有点乏味。所以我们使用body-parser包来完成所有这项任务。它提供了四个模块来解析不同类型的数据JSON正文解析器生体解析器文本正文解析器URL编码的表单体解析器拥有原始内容后,body-parser将使用上述策略之一(取决于您决定使用的中间件)来解析数据。您可以通过阅读他们的文档了解更多相关信息。在设置req.body解析的主体之后,主体解析器将调用next()以在堆栈中调用下一个中间件,然后可以访问请求数据而无需考虑如何解压缩和解析它。

摇曳的蔷薇

要处理Express.js版本4及更高版本中的HTTP POST请求,您需要安装名为的中间件模块。body-parserbody-parser提取传入请求流的整个正文部分并将其公开req.body。中间件早先是Express.js的一部分,但现在你必须单独安装它。该body-parser模块解析使用HTTP POST请求提交的JSON,缓冲区,字符串和URL编码数据。body-parser使用NPM 安装,如下所示。npm install body-parser --save
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答