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

是否仍需使用body-parser?express.json与bodyParser.json功能是否一致?

express.json() 与 bodyParser.json() 的功能对比及使用建议

功能是否相同?

完全相同。

从Express 4.16.0版本开始,Express官方已经将body-parser模块的核心功能(包括json()和urlencoded())集成到了Express自身的API中。也就是说,express.json()本质上就是对bodyParser.json()的直接封装,底层实现完全一致——两者都是用来解析请求头为Content-Type: application/json的JSON格式请求体,解析完成后会将结果挂载到req.body对象上供后续路由使用。

当前是否仍有必要使用body-parser?

分两种情况判断:

  • 如果你的项目使用Express 4.16.0及以上版本:完全不需要单独安装和引入body-parser包。直接使用Express内置的express.json()和express.urlencoded()即可,效果和性能与body-parser完全一致。
  • 如果你的项目依赖Express 4.16.0以下版本:必须单独安装body-parser包,因为此时Express还未内置这些解析功能,需要借助body-parser来处理JSON和URL编码的请求体。

另外需要注意,body-parser还提供一些小众的解析方法(比如bodyParser.raw()、bodyParser.text()),如果你的项目需要用到这些,仍然可以单独安装body-parser来使用;但对于绝大多数常见的JSON和表单请求解析场景,Express内置的方法已经足够覆盖。

示例代码

现代Express版本(4.16.0+)的写法

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

// 解析JSON请求体
app.use(express.json());

app.post('/api/data', (req, res) => {
  console.log(req.body); // 已解析的JSON数据
  res.send('Received JSON data');
});

旧版Express(<4.16.0)的写法

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

// 使用body-parser解析JSON请求体
app.use(bodyParser.json());

app.post('/api/data', (req, res) => {
  console.log(req.body);
  res.send('Received JSON data');
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:50:00