express.json({扩展:假})中参数的含义

时间:2019-09-02 21:32:50

标签: javascript node.js express

我正在与Express一起建立API,并且遇到了以下代码行:app.use(express.json( { extended: false } ));

我已经看过express的文档,但是我没有找到这种方法,是缺少文档还是缺少某些内容?

3 个答案:

答案 0 :(得分:1)

您不是。这显然是错误的。作为[选项],您可以传递以下内容:膨胀,限制,齐磊,严格,输入,验证

https://expressjs.com/en/api.html#express.json

答案 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的体验。