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

REST API开发中req.body为undefined问题求解,技术栈Nuxt.js+Express.js

问题修复方案

根因定位

你遇到的链路中req.body为undefined的核心原因是Express服务未配置JSON请求体解析中间件,默认情况下Express不会自动解析POST请求携带的JSON格式 payload,未配置中间件时req.body默认返回undefined。

分步修复操作

1. 修复前端转发层(路径:project_front/server/routes/index.js)

在路由注册前新增JSON解析中间件,同时补充请求头配置和异常响应返回,修改后代码如下:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'
const { Router } = require('express')
const express = require('express')
const axios = require('axios')
const dotenv = require('dotenv')
dotenv.config()

const api = axios.create({
  baseURL: "http://localhost:3001/",
})

const router = Router()
// 新增:解析application/json格式的请求体
router.use(express.json())

router.post(`/p-t`, async (req, res) => {
  try {
    // 可放开下方注释验证当前层是否正常拿到请求数据
    // console.log('转发层收到数据:', req.body)
    const { data } = await api.post(`/post-tip`, req.body, {
      // 显式指定请求头,避免axios自动识别异常
      headers: { 'Content-Type': 'application/json' }
    })
    res.json(data)
  } catch (e) {
    console.log('转发异常:', e)
    // 补充异常响应,避免前端请求超时
    res.status(500).json({ error: '接口转发失败' })
  }
})

module.exports = router

2. 修复后端API层(路径:prodect_api/ 下的服务入口文件,通常为app.js/index.js)

找到后端Express实例初始化的位置,新增JSON解析中间件配置:

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

// 新增:全局配置JSON请求体解析
app.use(express.json())

// 原有路由注册逻辑保持不变
const routes = require('./src/routes/index')
app.use(routes)

// 原有服务启动逻辑保持不变
app.listen(3001, () => {
  console.log('后端API服务运行在3001端口')
})

可选优化项

你可以将project_front/api/index.js中的POST请求路径调整为绝对路径,避免路径拼接异常:

// 原代码:await api.post(`p-t`, payload)
// 修改为:
const { data } =  await api.post(`/p-t`, payload)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:57:03