Express 4.0で「拡張」とはどういう意味ですか?


90

アプリでエクスプレスとボディパーサーを使用しています。

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

しかし、Express 4.0で「拡張」とはどういう意味ですか?

私はこれを見つけました

extended - parse extended syntax with the qs module.

しかし、私はまだそれが何を意味するのか理解できません。

回答:



80

ときにextendedプロパティに設定されtrue、URLエンコードされたデータがで解析されますQSライブラリ

それどころか、

ときextendedプロパティに設定されfalse、URLエンコードされたデータは、代わりに解析されますクエリ文字列ライブラリ


`qsライブラリ`と `クエリ文字列ライブラリ`を使用した解析の違い

  • qsライブラリを使用すると、クエリ文字列からネストされたオブジェクトを作成できます。

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


  • クエリ文字列ライブラリ、クエリ文字列からのネストされたオブジェクトの作成をサポートしていません

    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' }
    


  • クエリ文字列ライブラリは「?」を除外します クエリ文字列から。

    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の回答を参照し、npmでqsとquery-stringを比較してください



1
選択した答えなければなりません
西

これは正しい答えとして選択されなければなりません。
AwsAnurag

21

Body-Parserドキュメントから:

解析されたデータを含む新しいbodyオブジェクトは、ミドルウェア(つまり、req.body)の後に要求オブジェクトに入力されます。このオブジェクトには、キーと値のペアが含まれます。値は、文字列または配列(extendedがfalseの場合)、または任意のタイプ(extendedがtrueの場合)です。

そして

拡張オプションを使用すると、URLエンコードされたデータをクエリ文字列ライブラリ(falseの場合)またはqsライブラリ(trueの場合)で解析するかを選択できます。「拡張」構文を使用すると、リッチオブジェクトと配列をURLエンコード形式にエンコードできるため、URLエンコードでJSONのようなエクスペリエンスを実現できます。詳細については、qsライブラリを参照してください。

基本的に拡張すると、完全なオブジェクトを解析できます。

ボディパーサー:Urlエンコード

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.