📜  body-parser 已弃用 undefined extended 提供扩展选项 - Javascript (1)

📅  最后修改于: 2023-12-03 15:29:38.140000             🧑  作者: Mango

body-parser 已弃用 undefined extended 提供扩展选项 - Javascript

在处理 POST 请求时,常常需要解析请求体中的数据。Node.js 中提供了一个 bodyParser 中间件来处理 JSON、Raw、Text 和 URL 编码等数据,可以通过 npm 安装。

但是在新版本中,body-parser 已经废弃了 extended 选项,默认的值已经是 true。如果使用了 bodyParser 的 extended 选项,请使用 queryString 来替换。

// 使用 qs 替换 extended 选项
const bodyParser = require('body-parser');
const qs = require('qs');
app.use(bodyParser.urlencoded({
  extended: true,
  verify: (req, res, buf) => {
    req.body = qs.parse(buf.toString());
  }
}));

虽然 body-parser 模块已经不再更新了,但是在使用过程中,如果需要处理 JSON 数据,可以使用 express 提供的 json 中间件来代替。

// 使用 express 的 json 中间件
app.use(express.json());

在新版本中,删除了 bodyParser 规则和 options 对象,直接导入 middleware 函数即可。

// 直接导入 middleware 函数
const { urlencoded } = require('body-parser');
app.use(urlencoded({
  extended: true,
  verify: (req, res, buf) => {
    req.body = qs.parse(buf.toString());
  }
}));

总之,如果你正在使用 bodyParser 中的 extended 选项,请使用 queryString 来替换。但是如果只是处理 JSON 数据,可以使用 express 自带的 json 中间件。

参考:body-parser