Node通过body-parser获取发布的variables

我试图检索节点应用程序中发布的variables。 我正在使用Postman表单数据(就像我在其他许多APItesting情况下)将消息发布到我的节点应用程序。 但是当我console.log request.body ,我得到一个空的对象。 这是我的整个节点应用程序:

 var express = require('express'); var app = express(); var bodyParser = require("body-parser"); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.post('/foo',function(request,response){ console.log(request.body); }); app.listen(3000, function(){ console.log('listening on *:3000'); }); 

张贴一些数据后,这是什么显示在我的控制台:

 listening on *:3000 {} 

这是我的package.json:

 { "name": "api", "version": "0.0.1", "description": "api", "dependencies": { "express": "^4.12.4", "socket.io": "^1.3.5", "body-parser": "~1.12.0" } } 

我想我想继续使用body parser,因为我打算使用json数据创build这个API。 该应用程序加载得很好,没有错误。 我错过了什么?

经过一些testing之后,我发现body-parser不能parsingmultipart/form-data因为他们的README是Postman的默认编码。

要parsing这种格式,你可以使用:(再次从他们的自述文件中)

  • busboy和连接busboy
  • 多党和连接多党
  • 强大
  • multer

如果只是为了debugging目的,请设置邮递员发送:

x-www-form-encoded通过选中相应的checkbox(见图片) 选中“x-www-form-encoded”复选框

或者是原始模式,注意将mime头部设置为application/json否则parsing器将忽略它(请参见图片) 检查“原始”,不要忘记选择“应用程序/ JSON”作为编码

当我使用邮递员发送数据和将代码内容设置为application/x-www-form-urlencoded时,我得到了预期的控制台输出。 npm-bodyparser不处理multipart/form-data ,这就是你发布的内容。

要parsingmultipart/form-data ,请使用multer或者multer