首页 > 解决方案 > Nodejs bodyparser返回未定义的body变量

问题描述

我正在尝试使用 NodeJS 脚本(使用 Express)提取 POST 数据。正文已收到,但在使用Postman发布到页面时,我似乎无法从中提取变量。该变量未定义,尽管我使用了在不同问题中找到的相同代码。我已经正确安装了 Nodejs、express 和 body-parser。

为了澄清,我用 Postman 发布表单数据,键为“用户名”,值为“测试”。

有人知道我在做什么错吗?

var https = require('https');
var fs = require('fs');
var app = require('express')();
const bodyParser = require("body-parser");

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


var httpsOptions = {
    key: fs.readFileSync('/home/privkey.pem'),
    cert: fs.readFileSync('/home/cert.pem'),
};

var server = https.createServer(httpsOptions, app);
server.listen(3000);


app.get('/', function(req, res) { //On get
    res.send(req.method);
});

app.post('/', function(req, res) { //On post
    res.send( req.body.username );
});

标签: node.jsexpressbody-parser

解决方案


我想这与编码有关:

  • JSON:您必须使用Content-Type: application/json设置标头,并在路由之前添加 express 中的编码:

    app.use(bodyParser.json());

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

否则,您可以只使用选项x-www-form-urlencoded并设置输入


推荐阅读