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

Postman发送form-data类型PUT请求时Express后端req.body为空如何解决

问题原因
  • Express 原生仅内置了express.json()和express.urlencoded()两种请求体解析中间件,仅支持解析application/json和application/x-www-form-urlencoded格式的请求体,本身不支持解析multipart/form-data(form-data)格式的请求体,因此直接接收form-data格式的请求时req.body默认是空对象。
  • 你反馈POST请求可正常拿到数据,大概率是发送POST请求时Postman误选了x-www-form-urlencoded格式,而非form-data,和PUT请求的实际发送格式不一致导致的差异。
解决方案

要解析form-data格式的请求体,需要使用专门的解析中间件,最常用的是multer,操作步骤如下:

  1. 安装multer依赖
npm install multer
  1. 在对应路由文件中引入并配置multer,若仅需解析普通文本字段、不需要处理文件上传,可配置为仅解析非文件字段:
const multer = require('multer');
// 配置不存储文件,仅解析form-data中的文本字段
const upload = multer().none();
  1. 给需要接收form-data的PUT/POST路由添加multer中间件:
router.put("/edit/:id", upload, async (req, res) => {
try {
    console.log(req.body); // 可正常输出form-data的字段内容
    res.send("success");
} catch (error) {
    console.log(error);
}});
额外注意事项
  • 发送form-data请求时,不要在Postman的Header中手动设置Content-Type: multipart/form-data,Postman会自动生成带boundary参数的正确Content-Type,手动设置缺少boundary会导致解析失败。
  • 如果有文件上传需求,可根据multer的配置规则设置存储路径、文件过滤规则即可。

内容的提问来源于stack exchange,提问作者Mohamed Anouar Jabri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:02