Apa arti 'diperpanjang' dalam express 4.0?

90

Saya menggunakan express dan juga body-parser di aplikasi saya.

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

Tapi, Apa arti 'diperpanjang' dalam express 4.0?

aku menemukan ini

extended - parse extended syntax with the qs module.

Namun, saya masih tidak bisa memahami apa artinya.

KimCrab
sumber

Jawaban:

80

Jika extendedproperti disetel ke true, data yang dikodekan URL akan diurai dengan pustaka qs .

Sebaliknya,

ketika extendedproperti disetel ke false, data yang dienkode URL akan diurai dengan pustaka string kueri .


Perbedaan antara penguraian dengan `qs library` vs` querystring library`

  • perpustakaan qs memungkinkan Anda untuk membuat objek bersarang dari string kueri Anda.

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


  • pustaka string kueri tidak mendukung pembuatan objek bertingkat dari string kueri Anda.

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


  • perpustakaan qs tidak akan memfilter '?' dari string kueri.

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


  • perpustakaan query-string akan memfilter '?' dari string kueri.

    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


Untuk informasi lebih lanjut, Anda dapat merujuk ke jawaban Leonid Beschastny , dan npm membandingkan qs vs query-string .

Andrew Lam
sumber
1
harus menjadi jawaban yang dipilih
nishi
Ini harus dipilih sebagai jawaban yang benar.
AwsAnurag
21

Dari dokumen Body-Parser:

Objek tubuh baru yang berisi data yang diurai diisi pada objek permintaan setelah middleware (yaitu req.body). Objek ini akan berisi pasangan nilai kunci, di mana nilainya bisa berupa string atau larik (bila diperpanjang salah), atau jenis apa pun (bila diperpanjang benar).

Dan

Opsi yang diperluas memungkinkan untuk memilih antara mem-parse data yang dikodekan URL dengan pustaka string kueri (bila salah) atau pustaka qs (bila benar). Sintaks "diperpanjang" memungkinkan objek dan array kaya untuk dienkode ke dalam format yang dienkode URL, memungkinkan pengalaman seperti JSON dengan URL-encoded. Untuk informasi lebih lanjut, silakan lihat perpustakaan qs.

Pada dasarnya diperpanjang memungkinkan Anda untuk mengurai objek penuh.

Parser Tubuh: Dienkodekan Url

Logan Tegman
sumber