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

使用Postman发送POST请求时req无请求体的问题(Node.js REST开发)

解决Express POST请求中req.body为空的问题

嘿,我之前也踩过这个坑!你遇到的req没有请求体的问题,核心原因是Express默认不会自动解析POST请求的请求体,必须手动配置对应的中间件才行。下面是具体的解决步骤:

1. 添加请求体解析中间件

Express 4.x及以后的版本,已经把常用的请求体解析中间件集成到框架里了,不用额外安装body-parser包。直接在你的项目主入口文件(比如app.js或者server.js)里添加以下代码:

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

// 解析JSON格式的请求体
app.use(express.json());
// 解析URL编码的表单数据(支持嵌套对象)
app.use(express.urlencoded({ extended: true }));

// 然后再挂载你的路由
app.use('/your-router-path', require('./routes/your-router-file'));

这两行中间件会帮你把POST请求里的JSON或表单数据解析到req.body里,这样你就能拿到title、desc这些字段了。

2. 检查Postman的请求配置

发送请求时,一定要确保请求头和请求体格式匹配:

  • 如果是发送JSON数据:
    • 在Postman里选择Body -> raw,然后格式选JSON
    • 确认请求头里的Content-Type是application/json(Postman会自动帮你设置)
  • 如果是发送表单数据:
    • 选择Body -> x-www-form-urlencoded或者form-data
    • 对应的Content-Type会自动设置为application/x-www-form-urlencoded或multipart/form-data

3. 完善你的POST路由代码

另外,你的ad.save回调可以更严谨一点,处理错误并返回合适的状态码:

.post((req, res) => {
  var ad = new AdModule();
  ad.title = req.body.title;
  ad.desc = req.body.desc;
  ad.price = req.body.price;

  ad.save((err, savedAd) => {
    if (err) {
      // 返回500状态码和错误信息
      return res.status(500).send(err);
    }
    // 返回201(创建成功)状态码和保存后的广告数据
    res.status(201).json(savedAd);
  });
})

按照上面的步骤操作后,再用Postman发送POST请求,应该就能正常拿到req.body里的数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:19:38