无法使用 NodeJS/ExpressJS 和 Postman 获取 POST 数据

新手上路,请多包涵

这是我的服务器的代码:

 var express = require('express');
var bodyParser = require("body-parser");
var app = express();
app.use(bodyParser.json());

app.post("/", function(req, res) {
    res.send(req.body);
});

app.listen(3000, function () {
    console.log('Example app listening on port 3000!');
});

从 Postman,我向 http://localhost:3000/ 发起 POST 请求,在 Body/form-data 中,我有一个键“foo”和值“bar”。

但是,我在响应中不断收到一个空对象。 req.body 属性始终为空。

我错过了什么? 在此处输入图像描述

原文由 user2923322 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

添加请求的编码。这是一个例子

..
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
..

然后在 Postman 中选择 x-www-form-urlencoded 或将 Content-Type 设置为 application/json 并选择 raw

编辑 以使用 raw

生的

{
  "foo": "bar"
}

标头

Content-Type: application/json

编辑#2 回答聊天中的问题:

  1. 为什么它不能与表单数据一起使用?

你当然可以,看看这个答案 How to handle FormData from express 4

  1. 使用 x-www-form-urlencodedraw 有什么区别

application/json 和 application/x-www-form-urlencoded 的区别

原文由 R. Gulbrandsen 发布,翻译遵循 CC BY-SA 3.0 许可协议

let express = require('express');
let app = express();

// For POST-Support
let bodyParser = require('body-parser');
let multer = require('multer');
let upload = multer();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/api/sayHello', upload.array(), (request, response) => {
    let a = request.body.a;
    let b = request.body.b;

    let c = parseInt(a) + parseInt(b);
    response.send('Result : '+c);
    console.log('Result : '+c);
});

app.listen(3000);

示例 JSON 和 JSON 的结果:

示例 Json 和 json 的结果

设置 Content-typeL 应用程序/JSON:

设置内容类型:application/json

原文由 Goutam Ghosh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题