📅  最后修改于: 2023-12-03 15:29:38.140000             🧑  作者: Mango
在处理 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