React+Express栈中POST请求req.body无法访问的问题
解决Express无法获取POST请求req.body的问题
你的问题核心是Express服务器未配置JSON请求体解析中间件,导致无法解析React发送的JSON格式数据,所以req.body返回undefined。
修复步骤
在你的Express项目入口文件(比如app.js或server.js)中,在定义路由之前添加express.json()中间件:
const express = require('express'); const app = express(); // 关键:添加JSON解析中间件,必须放在所有路由之前 app.use(express.json()); // 之后再定义你的POST路由 app.post("/hello", async function (req, res) { let passedInToggleValue = false console.log(req.body); if (req.body === null || req.body === undefined) { console.log("body is empty"); } else if (!req.body.hasOwnProperty('switchBool')) { console.log("switchBool is empty"); } else if (req.body.switchBool) { passedInToggleValue = true } const toggleValue = passedInToggleValue ? "on" : "off"; const resData = `this backend is running and the Testing On/Off Switch is ${toggleValue}`; res.send(resData); });
原因说明
Express框架默认不会自动解析Content-Type: application/json格式的请求体,必须通过express.json()中间件来完成解析工作。只有配置了这个中间件,服务器才能将请求中的JSON数据解析后存入req.body,你的路由才能正常读取到参数。
内容的提问来源于stack exchange,提问作者ChristianOConnor
相关产品推荐
相关产品推荐

