1

我正在尝试在节点应用程序中检索发布的变量。我正在使用 Postman 表单数据(就像我在许多其他 API 测试情况中一样)将消息发布到我的节点应用程序。但是当我console.logrequest.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"
  }
}

我想我想继续使用正文解析器,因为我打算将它作为一个带有 json 数据的 API。该应用程序加载正常,没有错误。我错过了什么?

4

2 回答 2

1

当我使用邮递员和您的代码将内容类型设置为application/x-www-form-urlencoded. npm-bodyparser不处理multipart/form-data,这是您发布的内容。

解析multipart/form-data,使用multeror busboy

于 2015-07-09T00:05:37.007 回答
1

经过一些测试,我发现body-parser无法multipart/form-data按照他们在自述文件中的说明进行解析,这是 Postman 的默认编码。

要解析这种格式,您可以使用:(再次来自他们的自述文件)

如果只是出于调试目的,请将 Postman 设置为发送:

x-www-form-encoded通过选中相应的复选框(见图) 检查

或原始模式,小心设置 mime 标头,application/json否则解析器将忽略它(见图) 查看

于 2015-07-09T00:06:58.683 回答