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.
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.
Lorsque la propriété
extended
est définie surtrue
, 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 surfalse
, les données codées par URL seront à la place analysées avec bibliothèque de chaînes de requête .
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 .
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.