web-dev-qa-db-fra.com

Que signifie "étendu" dans Express 4.0?

J'utilise express et aussi body-analyseur 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.

62
KimCrab

Si extended est false, vous ne pouvez pas poster "objet imbriqué"

person[name] = 'cw'

// Nested Object = { person: { name: cw } }

Si extended est true, vous pouvez faire ce que vous voulez.

115
Wayne Chiu

Lorsque la propriété extended est définie sur true, les données codées en URL seront analysées avec le bibliothèque qs .

Au contraire,

lorsque la propriété extended est définie sur false, les données codées par URL seront à la place analysées avec 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' } }
    


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

    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 la bibliothèque ( ne sera pas filtrée par '?' de la chaîne de requête.

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


  • query-string la bibliothèque filtrera sur '?' 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 vous référer à réponse de Leonid Beschastny , et npm compare qs vs query-string .

32
Andrew Lam Yat Weng

De la documentation Body-Parser:

Un nouvel objet body contenant les données analysées est rempli sur l'objet requête après le middleware (c'est-à-dire req.body). Cet objet contiendra des paires clé-valeur, où la valeur peut être une chaîne ou un tableau (lorsque étendu est false) ou n'importe quel type (lorsque étendu est vrai).

Et

L'option étendue permet de choisir entre l'analyse des données codées en URL avec la bibliothèque de chaînes de requête (lorsque false) ou la bibliothèque qs (lorsque true). La syntaxe "étendue" permet aux objets riches et aux tableaux d'être codés au format codé URL, permettant une expérience de type JSON avec un codage URL. Pour plus d'informations, consultez la bibliothèque qs.

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

Analyseur de corps: URL codée

17
Logan Tegman