Node.js Express中Fetch POST请求时req.body为空的问题求助
Express中req.body为空的解决办法(Fetch POST请求场景)
你的问题核心在于前端Fetch请求没有正确处理请求体和请求头,导致后端express.json()中间件无法解析数据。具体问题和修复方式如下:
问题原因
- Fetch默认不会自动将JSON对象序列化为JSON字符串,直接传对象会被转为
[object Object]这种无效格式。 - 没有设置
Content-Type: application/json请求头,后端无法识别请求体格式,express.json()中间件不会触发解析。
修复后的前端代码
var json = { username: username.value, password: password.value }; console.log(json); // {username: 'a', password: 'b'} fetch('http://localhost:3000/register', { method: 'POST', // 新增:指定请求体为JSON格式 headers: { 'Content-Type': 'application/json' }, // 修改:将JSON对象序列化为字符串 body: JSON.stringify(json), }).then(function(res) { return res.json(); }).then(function(res) { console.log(res); });
后端代码优化(可选)
为了避免前端因无响应报错,可以在接口中添加返回逻辑:
app.post('/register', (req, res) => { console.log(req.body); // 返回JSON响应给前端 res.json({ status: 'success', data: req.body }); });
验证
重启后端服务后重新发送请求,后端控制台将正确输出包含username和password的请求体对象,前端也能收到对应的响应数据。
内容的提问来源于stack exchange,提问作者user16376844
相关产品推荐
相关产品推荐

