Node.js调用/data接口时req.body返回undefined,求问题排查
问题原因与解决方法
核心问题1:未配置请求体解析中间件
Express框架默认不会自动解析JSON格式的请求体,这是req.body返回undefined的直接原因。你需要在注册所有路由之前,添加JSON解析中间件:
// 在路由代码之前添加 app.use(express.json());
如果你的Express版本低于4.16.0,需要使用body-parser包来实现:
const bodyParser = require('body-parser'); app.use(bodyParser.json());
核心问题2:headers变量声明存在语法错误
你的代码里headers的定义不符合JavaScript语法,const关键字后缺少赋值操作,正确写法如下:
const headers = { "Content-type": "application/json" };
修正后的完整代码示例
const express = require('express'); const app = express(); const axios = require('axios'); const BASE_URL = '你的目标服务地址'; // 先配置JSON解析中间件 app.use(express.json()); app.post("/data", function(req, res) { const body = req.body; const headers = { "Content-type": "application/json" }; axios .post(`${BASE_URL}/data`, body, {headers}) .then((response) => { if (response.status === 200) { console.log("success", response.data); res.send(response.data); } }) .catch((e) => { console.error(e); // 建议补充错误响应,避免客户端长期等待 res.status(500).send('请求处理失败'); }); });
内容的提问来源于stack exchange,提问作者Didi
相关产品推荐
相关产品推荐

