使用Fetch调用Express后端时Request Body为空的问题排查
问题原因及解决方法
1. 请求头格式错误
你的script.js里Content-Type头多了个多余的分号:
"Content-Type": "application/json;", // 此处分号属于无效格式
正确写法应为:
"Content-Type": "application/json"
多余的分号会导致后端无法正确识别请求内容类型,进而无法解析请求体。
2. 请求体格式不匹配
你直接将字符串topic通过JSON.stringify转换后发送,此时请求体是纯字符串(比如"初中物理"),但这和你在Postman中发送的JSON对象格式(比如{"topic": "初中物理"})不一致,后端无法正确解析这种纯字符串格式的请求体。
修改script.js的body部分:
body: JSON.stringify({ topic: topic })
3. 后端未配置JSON解析中间件
如果你的后端基于Express框架,必须添加JSON解析中间件才能正确解析JSON请求体,否则request.body会是空对象。在server.js的入口逻辑中添加:
const express = require('express'); const app = express(); // 新增该行代码解析JSON请求体 app.use(express.json());
验证步骤
- 修正请求头和请求体格式后重新发送请求
- 确认后端已配置JSON解析中间件
- 此时后端控制台应能正常打印
topic数据
内容的提问来源于stack exchange,提问作者MrRox1337
相关产品推荐
相关产品推荐

