node.js - Express 4.17.1 给请求体未定义尝试了很多解决方案
问题描述
我尝试了社区和文档推荐的许多解决方案。我正在使用 express js verison 4.17.1 并尝试获取请求正文,如下面的代码所示,但每次尝试时它都会给我未定义的正文。我错过了什么吗?
var express = require('express');
var app = express();
app.use(express.json());
app.use(express.urlencoded());
app.use(express.text());
app.get('/home', function (req, res) {
console.log("Our body is ",req.body.uname);
res.send(JSON.stringify({ Hello:" World"}));
});
var port = process.env.PORT || 3000;
app.listen(port, function () {
console.log('Example app listening on port !');
});
解决方案
GET 请求没有正文 - 它只有 URL 和可能在 URL 中的任何参数。因此,req.body
在任何 GET 请求上都只是一个空对象。
主体通常出现在 PUT 或 POST 请求中,并且req.body
如果您正确解析了主体(看起来您已经配置了中间件),则会填充一些属性。
因此,从您的问题陈述中不清楚您是否应该使用app.post(...)
为 POST 定义请求处理程序,然后您可以读取可以与此类请求一起发送的 POST 正文,或者您是否只是尝试读取 URL 参数GET 诸如/somePath?uname=John
which 将在 中req.query.uname
,而不是req.body.uname
.
推荐阅读
- node.js - 如何使用 Puppeteer 下载 pdf
- javascript - 添加 https:// 前缀以使用 html 渲染图像
- javascript - Angular 6 代码转换与后端读取
- python - 转储 twitter 数据,尝试处理 csv 文件,程序运行,但不处理
- html - 需要为移动设备和小屏幕整齐地显示网站
- sonarqube - Problems at starting the SonarQube 7.1 web server
- vba - 当 Display 说它不是时,SubForm 控件反映 Null
- git - merging local repo with github repo is resulting in a fatal error
- react-native - 如何使用 react-navigation 推送新场景?
- azure - 如何在 Azure Functions 1.x 中使用多个 nuget 源?