【问题标题】:What does 'extended' mean in express 4.0?express 4.0中的“扩展”是什么意思?
【发布时间】:2015-07-09 17:51:44
【问题描述】:

我在我的应用中使用 express 和 body-parser。

app.use(bodyParser.urlencoded({ extended: false }));

但是,express 4.0 中的“扩展”是什么意思?

我找到了这个

extended - parse extended syntax with the qs module.

但是,我仍然无法理解它的含义。

【问题讨论】:

    标签: node.js express body-parser


    【解决方案1】:

    如果extendedfalse,则不能发布“嵌套对象”

    person[name] = 'cw'
    
    // Nested Object = { person: { name: cw } }
    

    如果extendedtrue,你可以随心所欲。

    【解决方案2】:

    extended 属性设置为 true 时,URL 编码的数据将 用qs library 解析。

    相反,

    extended属性设置为false时,URL编码的数据将 而是使用 querystring library 解析。


    使用`qs library`和`querystring library`解析的区别

    • qs 库允许您从查询字符串创建一个嵌套 对象。

      var qs = require("qs")
      var result = qs.parse("person[name]=bobby&person[age]=3")
      console.log(result) // { person: { name: 'bobby', age: '3' } }
      


    • query-string支持从您的查询字符串创建嵌套对象。

      var queryString = require("query-string")
      var result = queryString.parse("person[name]=bobby&person[age]=3")
      console.log(result) // { 'person[age]': '3', 'person[name]': 'bobby' }
      


    • qs 库将过滤掉“?”来自查询字符串。

      var qs = require("qs")
      var result = qs.parse("?a=b")
      console.log(result) // { '?a': 'b' }
      


    • query-string 库会过滤掉 '?'来自查询字符串。

      var queryString = require("query-string")
      var result = queryString.parse("?a=b")
      console.log(result) // { a: 'b' }
      

    app.use(bodyParser.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded
    


    更多信息可以参考Leonid Beschastny's answernpm compare qs vs query-string

    【讨论】:

    【解决方案3】:

    来自 Body-Parser 文档:

    一个包含解析数据的新主体对象填充在中间件之后的请求对象上(即req.body)。该对象将包含键值对,其中值可以是字符串或数组(当扩展为假时)或任何类型(当扩展为真时)。

    扩展选项允许在使用 querystring 库(如果为 false)或 qs 库(如果为 true)解析 URL 编码数据之间进行选择。 “扩展”语法允许将丰富的对象和数组编码为 URL 编码格式,从而提供类似 JSON 的 URL 编码体验。如需更多信息,请参阅 qs 库。

    基本扩展允许您解析完整的对象。

    Body Parser: Url Encoded

    【讨论】:

      猜你喜欢
      • 2017-06-29
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 2022-11-22
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多