我正在使用 express 来设置 API,我遇到了这行代码:app.use(express.json( { extended: false } ));
我已经看过 express 的文档,但是我没有找到这个方法,是文档缺失还是我遗漏了什么?
我正在使用 express 来设置 API,我遇到了这行代码:app.use(express.json( { extended: false } ));
我已经看过 express 的文档,但是我没有找到这个方法,是文档缺失还是我遗漏了什么?
我找到了答案,虽然它很奇怪。这行代码以某种方式工作,即使它从不同的方法中接受一个选项。
https://expressjs.com/en/api.html#express.urlencoded
此选项允许在使用 querystring 库(如果为 false)或 qs 库(如果为 true)解析 URL 编码数据之间进行选择。“扩展”语法允许将丰富的对象和数组编码为 URL 编码格式,从而提供类似 JSON 的 URL 编码体验。
答案来自查看实际的 Express 和 body-parser 代码......
如果你在这里express.json()
查看该方法的 Express 代码,你会发现它是来自 body-parser 模块的方法的直接传递。.json()
// from express.js
exports.json = bodyParser.json;
所以,如果你再去看看 body-parser 文档,中间件的extended
选项就没有了。body-parser.json()
正如您所发现的,该extended
选项已记录在body-parser.urlencoded()
中间件中。但是,由于这与.json()
中间件方法不同,因此该代码似乎误以为将extended
选项与.json()
中间件一起使用。
如果您查看中间件的代码body-parser.json()
,您会发现代码中根本没有对extended
选项的引用。
因此,它似乎是在您显示的代码中错误传递的选项,随后被 express/body-parser json 中间件忽略。
你不是。这显然是一个错误。作为 [options],您可以传递以下内容:inflate、limit、reviver、strict、type、verify