You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

axios向Node.js Express后端传值失败 接收端无法获取正确计算结果

问题根因
  • Express框架默认不会自动解析POST请求携带的请求体,未配置对应解析中间件时req.body值为undefined,无法读取传参
  • 发送端使用axios发POST请求时,无需手动调用JSON.stringify序列化参数,axios默认会自动将普通对象按application/json格式序列化,手动转写反而可能触发格式异常
  • 接收端路由未给客户端返回响应,会导致发送端请求持续等待直到超时
修正方案
  1. 接收端在路由定义前添加Express内置的JSON请求体解析中间件express.json(),无需额外安装第三方依赖(适用于Express 4.16.0及以上版本)
  2. 发送端移除JSON.stringify包裹,直接传递参数对象
  3. 接收端处理完逻辑后给请求方返回响应,避免请求挂起
修正后完整代码

数据发送端(生产者)

const axios = require('axios');
const URL = "http://localhost:5000/"
let n1 = 3
let n2 = 5
let sum = n1 + n2;

axios.post(URL, {
    expression: sum,
  })
  .then(function (response) {
    console.log('请求成功,服务端返回:', response.data);
  })
  .catch(function (error) {
    console.log('请求异常:', error);
  });

数据接收端(Express服务)

const express = require('express')
const app = express()

// 注册JSON请求体解析中间件,必须放在路由定义之前
app.use(express.json())

app.post('/', (req, res) => {
  // 读取传递的计算结果,控制台会打印8
  console.log(req.body.expression);
  // 返回响应给发送端
  res.send({ status: 'ok', receivedValue: req.body.expression })
})

app.listen(5000, () => console.log('5000端口服务已启动'))

验证方式:先启动接收端服务,再运行发送端脚本,接收端控制台会正确打印出传递的计算结果值8。

内容的提问来源于stack exchange,提问作者oobthenewb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:10:00