首页 > 解决方案 > 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 !');
});

标签: node.jsexpress

解决方案


GET 请求没有正文 - 它只有 URL 和可能在 URL 中的任何参数。因此,req.body在任何 GET 请求上都只是一个空对象。

主体通常出现在 PUT 或 POST 请求中,并且req.body如果您正确解析了主体(看起来您已经配置了中间件),则会填充一些属性。

因此,从您的问题陈述中不清楚您是否应该使用app.post(...)为 POST 定义请求处理程序,然后您可以读取可以与此类请求一起发送的 POST 正文,或者您是否只是尝试读取 URL 参数GET 诸如/somePath?uname=Johnwhich 将在 中req.query.uname,而不是req.body.uname.


推荐阅读