node.js - 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 );
});
解决方案
我想这与编码有关:
JSON:您必须使用Content-Type: application/json设置标头,并在路由之前添加 express 中的编码:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true }));
否则,您可以只使用选项x-www-form-urlencoded并设置输入
推荐阅读
- swift - swift firebase 从存储中获取图像并在 JSQMessage 控制器中显示
- javascript - Google BigQuery Python 库下载结果的速度是 Node JS 库的 2 倍
- python - -x 在 sorted 函数的键中是什么意思?
- junit - 使用 Mockito 和 JUNIT 和 CDI 模拟服务
- go - 如何使用 Golang 移位十六进制值?
- python - 从部分 href 下载和保存 PDF?
- stored-procedures - [Amazon](500310) 无效操作:"$$" 处或附近未终止的美元引号字符串
- swift - 结果类型通用参数“T”无法快速推断 5
- angular - 您可以使用不同的 sessionid cookie 发送令牌身份验证吗
- javascript - 屏幕在 CSS 中分成两部分