📌  相关文章
📜  'bodyParser' 已弃用. (1)

📅  最后修改于: 2023-12-03 14:58:58.332000             🧑  作者: Mango

'bodyParser' 已弃用.

在 Node.js 的 Web 开发中, bodyParser 是一个常用的中间件,用于解析 HTTP 请求体中的内容,比如 JSON、表单数据等。然而,从 Express 4.16.0 版本开始, bodyParser 已被废弃,取而代之的是官方推荐的其他解析中间件,包括 express.json()express.urlencoded()multer 等。

为什么废弃 bodyParser?

原因是,bodyParser 实际上是一组中间件的集合,每种类型的请求体都需要相应的中间件。使用 bodyParser 会将所有中间件都加载到应用中,一旦请求体中有未知类型的数据,处理请求的函数可能会出错,导致应用中断。

为了更好地支持不同类型的请求体, Express 团队决定将 bodyParser 拆分成独立的解析中间件。这些中间件只解析特定类型的请求体,具有更灵活和安全的特点。

具体用法
express.json()

解析 application/json 格式的请求体,对应的 MIME 类型是 application/json。示例代码:

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

app.use(express.json());

app.post('/todos', (req, res) => {
  console.log(req.body);
  // 处理请求体中的 JSON 数据
});

app.listen(3000);
express.urlencoded()

解析 application/x-www-form-urlencoded 格式的请求体,对应的 MIME 类型是 application/x-www-form-urlencoded。示例代码:

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

app.use(express.urlencoded({ extended: true }));

app.post('/todos', (req, res) => {
  console.log(req.body);
  // 处理请求体中的表单数据
});

app.listen(3000);
multer

解析 multipart/form-data 格式的请求体,通常用于上传文件。示例代码:

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

const app = express();
const upload = multer({ dest: 'uploads/' });

app.post('/profile', upload.single('avatar'), (req, res, next) => {
  console.log(req.file);
  // 处理上传的文件
});

app.listen(3000);
总结

虽然 bodyParser 已经废弃,但解析请求体的需求并没有消失。使用 express.json()express.urlencoded()multer 等独立的解析中间件可以更好地满足不同的需求,帮助开发者构建更健壮、可维护的 Web 应用。