我不明白为什么在Express应用程序中需要体解析器,因为我们可以不使用体解析器来获取数据。 它到底做什么,怎么做?


当前回答

如果你不想使用单独的npm包体解析器,最新的express(4.16+)有内置的体解析器中间件,可以这样使用:

const app = express();
app.use(express.json({ limit: '100mb' }));

附:并不是所有的体解析功能都在表达式中。请参考文档以获得完整的使用方法

其他回答

它解析HTTP请求体。这通常是必要的,当您需要知道的不仅仅是您所点击的URL时,特别是在POST或PUT PATCH HTTP请求的上下文中,您想要的信息包含在正文中。

基本上,它是一个中间件,用于解析JSON,纯文本,或只是返回一个原始的Buffer对象供您根据需要处理。

如果你不想使用单独的npm包体解析器,最新的express(4.16+)有内置的体解析器中间件,可以这样使用:

const app = express();
app.use(express.json({ limit: '100mb' }));

附:并不是所有的体解析功能都在表达式中。请参考文档以获得完整的使用方法

为了访问post数据,我们必须使用body解析器。基本上body-parser就是允许express读取body然后解析成我们能理解的Json对象。

这些都是为了方便起见。

基本上,如果问题是“我们需要使用体解析器吗?”答案是否定的。我们可以使用更迂回的路线从请求后的客户端获得相同的信息,这种路线通常不太灵活,并且会增加我们必须编写的代码数量来获得相同的信息。

这有点像问“我们一开始需要用express吗?”同样,答案是否定的,同样,这一切都归结为为我们省去了编写更多代码来完成“内置”表达的基本事情的麻烦。

从表面上看,体解析器使以各种格式获取客户端请求中包含的信息变得更容易,而不是让您捕获原始数据流并确定信息的格式,更不用说手动将信息解析为可用的数据了。

编辑:2019年4月2日 在express@4.16.0中,express中包含了体解析器中间件,因此您不再需要单独安装体解析器。更多细节请看这个

OLD:

要在Express.js版本4及更高版本中处理HTTP POST请求,需要安装名为body-parser的中间件模块。

body解析器提取传入请求流的整个body部分,并在req.body上公开它。

中间件之前是Express.js的一部分,但现在你必须单独安装它。

这个体解析器模块解析使用HTTP POST请求提交的JSON、缓冲区、字符串和URL编码的数据。使用NPM安装体解析器,如下所示。

npm install body-parser --save