Co oznacza „rozszerzona” w Express 4.0?

87

W mojej aplikacji używam Express, a także Body-Parser.

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

Ale co oznacza „rozszerzona” w wyrażeniu 4.0?

znalazłem to

extended - parse extended syntax with the qs module.

Jednak nadal nie mogę zrozumieć, co to znaczy.

KimCrab
źródło

Odpowiedzi:

76

Gdy extendedwłaściwość jest ustawiona na true, dane zakodowane w adresie URL będą analizowane z biblioteką qs .

Przeciwnie,

gdy extendedwłaściwość jest ustawiona na false, dane zakodowane w adresie URL będą zamiast tego analizowane z biblioteką querystring .


Różnice między analizowaniem za pomocą „qs library” a „querystring library”

  • Biblioteka qs umożliwia utworzenie zagnieżdżonego obiektu z ciągu zapytania.

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


  • Biblioteka ciągu zapytania nie obsługuje tworzenia zagnieżdżonego obiektu na podstawie ciągu zapytania.

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


  • Biblioteka qs nie odfiltruje „?” z ciągu zapytania.

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


  • Biblioteka ciągu zapytania odfiltruje znak „?” z ciągu zapytania.

    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


Aby uzyskać więcej informacji, możesz zapoznać się z odpowiedzią Leonida Beschastnego i npm porównać qs z ciągiem zapytania .

Andrew Lam
źródło
1
powinna być wybraną odpowiedzią
nishi
21

Z dokumentacji Body-Parser:

Nowy obiekt body zawierający przeanalizowane dane jest wypełniany w obiekcie żądania po oprogramowaniu pośredniczącym (tj. Req.body). Ten obiekt będzie zawierał pary klucz-wartość, gdzie wartością może być ciąg znaków lub tablica (gdy rozszerzony to fałsz) lub dowolny typ (gdy rozszerzony to prawda).

I

Rozszerzona opcja pozwala wybrać między analizowaniem danych zakodowanych w adresie URL za pomocą biblioteki querystring (jeśli fałsz) lub biblioteki qs (jeśli prawda). „Rozszerzona” składnia umożliwia zakodowanie obiektów i tablic w formacie zakodowanym w postaci adresu URL, co pozwala na działanie podobne do JSON z kodowaniem URL. Więcej informacji można znaleźć w bibliotece qs.

Zasadniczo rozszerzona pozwala na parsowanie pełnych obiektów.

Parser treści: zakodowany adres URL

Logan Tegman
źródło