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

使用Fetch API提交text/plain数据,后端req.body为空的问题

解决Fetch提交text/plain时后端req.body为空的问题

问题原因

Express 默认的请求体解析逻辑仅支持解析 application/json 和 application/x-www-form-urlencoded 类型的数据,不会处理 text/plain 格式的请求体,因此直接访问 req.body 会得到空对象。

解决方案

根据你的Express版本选择对应的配置方式:

方式1:Express 4.16+版本(内置解析能力)

Express 4.16及以上版本已经内置了原body-parser的功能,直接添加express.text()中间件即可解析text/plain类型数据。

  • 全局配置(所有路由生效):
const express = require('express');
const app = express();

// 配置text/plain解析中间件
app.use(express.text());

const router = express.Router();
router.post('/test', (req, res) => {
  console.log(req.body); // 输出: "this is a test"
  res.send('OK');
});

app.use(router);
  • 单独路由配置(仅目标路由生效):
const express = require('express');
const router = express.Router();

// 只为/test路由添加text解析
router.post('/test', express.text(), (req, res) => {
  console.log(req.body);
  res.send('OK');
});

方式2:旧版Express(需手动安装body-parser)

如果你的Express版本低于4.16,需要先安装body-parser依赖:

npm install body-parser

然后使用bodyParser.text()中间件:

const express = require('express');
const bodyParser = require('body-parser');
const router = express.Router();

router.post('/test', bodyParser.text(), (req, res) => {
  console.log(req.body);
  res.send('OK');
});

配置完成后,再次发起前端的Fetch请求,后端就能正确获取到text/plain类型的请求体内容了。

内容的提问来源于stack exchange,提问作者Sean.L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:03:27