Was bedeutet "erweitert" in Express 4.0?

87

Ich verwende Express und auch Body-Parser in meiner App.

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

Aber was bedeutet "erweitert" in Express 4.0?

ich habe das gefunden

extended - parse extended syntax with the qs module.

Ich kann jedoch immer noch nicht verstehen, was es bedeutet.

KimCrab
quelle

Antworten:

74

Wenn die extendedEigenschaft auf festgelegt ist true, werden die URL-codierten Daten mit der qs-Bibliothek analysiert .

Andererseits,

Wenn die extendedEigenschaft auf festgelegt ist false, werden die URL-codierten Daten stattdessen mit der Querystring-Bibliothek analysiert .


Die Unterschiede zwischen dem Parsen mit "qs library" und "querystring library"

  • Mit der qs- Bibliothek können Sie ein verschachteltes Objekt aus Ihrer Abfragezeichenfolge erstellen .

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


  • Abfrage-String - Bibliothek nicht unterstützt ein verschachteltes Objekt aus dem Abfrage - String zu erstellen.

    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 Bibliothek wird nicht herausfiltern ‚?‘ aus der Abfragezeichenfolge.

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


  • Die Abfragezeichenfolgenbibliothek filtert '?' heraus. aus der Abfragezeichenfolge.

    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


Für weitere Informationen können Sie sich auf Leonid Beschastny Antwort und npm qs vs Abfrage-String vergleichen .

Andrew Lam
quelle
1
sollte die ausgewählte Antwort sein
Nishi
21

Aus den Body-Parser-Dokumenten:

Ein neues Body-Objekt, das die analysierten Daten enthält, wird nach der Middleware (dh req.body) in das Anforderungsobjekt eingefügt. Dieses Objekt enthält Schlüssel-Wert-Paare, wobei der Wert eine Zeichenfolge oder ein Array (wenn erweitert falsch ist) oder ein beliebiger Typ (wenn erweitert wahr ist) sein kann.

Und

Mit der erweiterten Option können Sie wählen, ob Sie die URL-codierten Daten mit der Querystring-Bibliothek (wenn false) oder der qs-Bibliothek (wenn true) analysieren möchten. Die "erweiterte" Syntax ermöglicht die Codierung umfangreicher Objekte und Arrays in das URL-codierte Format, wodurch eine JSON-ähnliche Erfahrung mit URL-codiert ermöglicht wird. Weitere Informationen finden Sie in der qs-Bibliothek.

Grundsätzlich erweitert ermöglicht es Ihnen, vollständige Objekte zu analysieren.

Body Parser: URL codiert

Logan Tegman
quelle