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

Express搭建REST API时req.body返回空对象问题求助

问题修复方案

1. 修正中间件注册顺序(核心问题)

Express 中间件按照注册顺序依次执行,你当前把 CORS 中间件注册在路由挂载之后,会导致跨域请求的预检逻辑无法正常触发,进而导致 POST 请求的请求体解析失败。
把服务端代码里的中间件顺序调整为:

// 请求解析中间件放最前
app.use(express.json());
app.use(express.urlencoded({ extended:true }));
// CORS 中间件放在路由之前
app.use(cors({
    origin: '*',
    methods: "GET, POST, PUT, DELETE, OPTIONS", // 新增OPTIONS方法支持预检请求
    optionsSuccessStatus: 200
}));
// 路由放在所有全局中间件之后
app.use("/", router);

2. 确认请求头配置

确保你发送 POST 请求时,请求头的 Content-Type 字段和你传的请求体格式匹配:

  • 如果传 JSON 格式的请求体,必须设置 Content-Type: application/json
  • 如果传表单格式(x-www-form-urlencoded),设置 Content-Type: application/x-www-form-urlencoded
  • 如果传 form-data 格式(包含文件上传),express 内置中间件无法解析,需要引入 multer 中间件处理

3. 修复其他代码错误(避免后续运行报错)

3.1 修正模型引用错误

你的模型文件导出的是 Article,路由中创建实例时写的 new Articles() 多了个s,需要调整路由里的导入和实例化代码:

// 路由开头导入模型的代码要和导出名匹配
import Article from '../models/你的模型文件名.js'
// 实例化的时候用Article
const newArticle = new Article({
    title: body.title,
    description: body.description,
    createdat: body.createdat, // 修正拼写错误:原代码写的craetedat
    createdby: body.createdby,
})

3.2 修正Schema字段拼写错误

Schema 里的创建人字段现在拼写为 craetedby,是错误拼写,建议修改为 createdby 避免后续业务逻辑出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:45:06