节点通过body-parser获取发布的变量

时间:2015-07-08 23:35:08

标签: node.js express body-parser

我正在尝试检索节点应用程序中发布的变量。我正在使用Postman表单数据(就像我在许多其他API测试情况中一样)将消息发布到我的节点应用程序。但当我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解析器,因为我打算用json数据制作这个API。该应用程序加载正常,没有错误。我错过了什么?

2 个答案:

答案 0 :(得分:1)

我在使用邮递员发布数据时将获得预期的控制台输出,并在将内容类型设置为application/x-www-form-urlencoded时使用您的代码。 npm-bodyparser无法处理您发布的multipart/form-data

要解析multipart/form-data,请使用multerbusboy

答案 1 :(得分:1)

经过一些测试后,我发现body-parser无法解析multipart/form-data,因为它们在自述文件上声明,这是邮递员的默认编码。

要解析此格式,您可以使用:(再次使用自述文件)

如果仅用于调试目的,请将Postman设置为发送:

x-www-form-encoded选中相应的复选框(参见图片) Check the "x-www-form-encoded" checkbox

或原始模式,小心将mime标头设置为application/json或解析器将忽略它(见图) Check "raw" and don't forget to choose "application/json" as encoding

相关问题