Que signifie «étendu» dans Express 4.0?

87

J'utilise express et aussi body-parser dans mon application.

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

Mais que signifie «étendu» dans Express 4.0?

j'ai trouvé ça

extended - parse extended syntax with the qs module.

Cependant, je ne peux toujours pas comprendre ce que cela signifie.

KimCrab
la source

Réponses:

76

Lorsque la extendedpropriété est définie sur true, les données encodées en URL seront analysées avec la bibliothèque qs .

Au contraire,

lorsque la extendedpropriété est définie sur false, les données encodées en URL seront à la place analysées avec la bibliothèque de chaînes de requête .


Les différences entre l'analyse avec `qs library` et` querystring library`

  • La bibliothèque qs vous permet de créer un objet imbriqué à partir de votre chaîne de requête.

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


  • La bibliothèque de chaînes de requête ne prend pas en charge la création d'un objet imbriqué à partir de votre chaîne de requête.

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


  • La bibliothèque qs ne filtrera pas '?' à partir de la chaîne de requête.

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


  • La bibliothèque de chaînes de requête filtrera '?' à partir de la chaîne de requête.

    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


Pour plus d'informations, vous pouvez consulter la réponse de Leonid Beschastny et npm compare qs vs query-string .

Andrew Lam
la source
1
devrait être la réponse sélectionnée
nishi
21

À partir de la documentation Body-Parser:

Un nouvel objet body contenant les données analysées est renseigné sur l'objet de requête après le middleware (ie req.body). Cet objet contiendra des paires clé-valeur, où la valeur peut être une chaîne ou un tableau (lorsque étendu est faux), ou tout type (lorsque étendu est vrai).

Et

L'option étendue permet de choisir entre l'analyse des données encodées en URL avec la bibliothèque de chaînes de requête (lorsqu'elle est fausse) ou la bibliothèque qs (lorsqu'elle est vraie). La syntaxe «étendue» permet d'encoder des objets et des tableaux riches au format URL encodé, permettant une expérience de type JSON avec l'URL encodée. Pour plus d'informations, consultez la bibliothèque qs.

Fondamentalement, étendu vous permet d'analyser des objets complets.

Analyseur corporel: URL encodée

Logan Tegman
la source