var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
// in latest body-parser use like below.
app.use(bodyParser.urlencoded({ extended: true }));
它将post请求解析为object。您将在req.body中获取变量。 在post请求处理程序中。
app.post('/post',function(request,response){
console.log(request.body) //you will get your data in this as object.
})
7条答案
按热度按时间dffbzjpn1#
您应该安装
body-parser
到npm-install
。现在它作为一个单独的中间件。然后在app.js中添加以下行
它将
post
请求解析为object
。您将在req.body
中获取变量。在
post
请求处理程序中。编辑1
上面的答案是针对特别提出的问题,OP正在寻找
bodyParser
(已弃用),它不再是express
的一部分。由于问题的标题非常通用,并且答案不包括
form-data
的所有方面,我将把@StLia的答案作为编辑。Body-Parser Readme
由于多部分实体复杂且通常较大,因此无法处理多部分实体。对于多部分实体,您可能会对以下模块感兴趣:
w6mmgewl2#
你可以使用express-powerful模块。通过以下命令安装'express-worldwide'
npm install express-formidable
简单示例如下
Click here for further description
hmae6n7t3#
从body-parser的README:
由于多部分实体复杂且通常较大,因此无法处理多部分实体。
上面的方法适用于
x-www-form-urlencoded
和json
,但不适用于任何multipart
。form-data
也是multipart
,头为multipart/form-data
。对于
form-data
,最好的解决方案是使用express-formidable。6g8kf2rb4#
正如这个StackOverflow回答中所述:
Express 4.16+已经实现了他们自己版本的body-parser,所以你不需要在你的项目中添加依赖项。你可以在Express中运行它
参见:query-string vs qs
pcww981p5#
我注意到@HubballiHuli的答案是使用一个名为express-worldwide的软件包。你不需要使用这个不必要的包,它提供了一个(小)代码文件。相反,你可以自己做(现在删除依赖)。
下面是formidableMiddleware文件:
现在我们来看看如何使用它:
我写了一篇关于不必要的软件包的文章,为什么不使用它们:https://medium.com/@alexjamesdunlop/unnecessary-packages-b3623219d86
ev7lccsx6#
除了
formidable
的解决方案外,还有一个模块,我自2019年以来一直在我最近的项目中使用。模块express-form-data可以很容易地在服务器文件中声明,如下所示:例如,在图像上传的情况下,
req.files
将提供处理文件所需的所有相关数据,如路径,大小,文件名等。p8ekf7hl7#
如果您希望将formidableMiddleware仅应用于一个API路由,而不是全局应用,则可以通过以下方式传递值。
这将是有用的,如果你想在不同的头之间混合传递给其他API的API,你不希望formidableMiddleware API被应用。