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

use*_*322 12 node.js express postman body-parser

这是我服务器的代码:

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!');
});
Run Code Online (Sandbox Code Playgroud)

从邮递员,我发起一个POST请求到http:// localhost:3000 /并在Body/form-data中我有一个键"foo"和值"bar".

但是我在响应中不断得到一个空对象.该req.body物业总是空的.

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

R. *_*sen 25

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

..
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
..
Run Code Online (Sandbox Code Playgroud)

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

编辑使用原始

生的

{
  "foo": "bar"
}
Run Code Online (Sandbox Code Playgroud)

Content-Type: application/json
Run Code Online (Sandbox Code Playgroud)

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

  1. 为什么它无法使用表单数据?

你肯定可以,只看这个答案如何从快递4处理FormData

  1. 使用x-www-form-urlencoded和有什么区别raw

application/json和application/x-www-form-urlencoded中的差异


小智 5

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);
Run Code Online (Sandbox Code Playgroud)

JSON 示例和 JSON 结果:

示例 Json 和 json 结果

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

设置内容类型:application/json