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.

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 .



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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.