我正在与Express一起建立API,并且遇到了以下代码行:app.use(express.json( { extended: false } ));
我已经看过express的文档,但是我没有找到这种方法,是缺少文档还是缺少某些内容?
答案 0 :(得分:1)
您不是。这显然是错误的。作为[选项],您可以传递以下内容:膨胀,限制,齐磊,严格,输入,验证
答案 1 :(得分:1)
答案来自查看实际的Express和主体解析器代码...
如果您查看express.json()
方法here的Express代码,您会发现它是.json()
方法从body-parser模块的直接传递
// from express.js
exports.json = bodyParser.json;
因此,如果您接下来查看主体解析器文档,则extended
中间件的body-parser.json()
选项没有任何内容。
您已经发现,extended
中间件的body-parser.urlencoded()
选项已记录在案。但是,由于这与.json()
中间件方法不同,因此看来该代码被误认为是将extended
选项与.json()
中间件一起使用。
如果您查看code for the body-parser.json()
middleware,则在代码中根本找不到对extended
选项的引用。
因此,它似乎是一个在您显示的代码中错误传递的选项,随后被express / body-parser json中间件忽略。
答案 2 :(得分:0)
我找到了答案,尽管这很奇怪。 即使采用了其他方法的选项,这行代码也可以以某种方式起作用。
https://expressjs.com/en/api.html#express.urlencoded
此选项允许您在使用querystring库(如果为false)或qs库(为true)解析URL编码的数据之间进行选择。 “扩展”语法允许将丰富的对象和数组编码为URL编码格式,从而使URL编码具有类似JSON的体验。