2015-04-30 14 views
23

Uso la parser express e anche body-parser nella mia app.Che cosa significa "esteso" in espresso 4.0?

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

Ma, cosa significa "esteso" in espresso 4.0?

ho trovato questo

extended - parse extended syntax with the qs module. 

Tuttavia, non riesco ancora a understrand cosa significa.

risposta

39

Se extended è false, non è possibile postare "oggetto nidificato"

person[name] = 'cw' 

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

Se extended è true, si può fare qualsiasi modo che ti piace.

+2

Bene, Bel esempio! – htafoya

+0

@htafoya contento di poter hlep –

+0

Grazie fratello :) @WayneChiu –

13

Dalla documentazione del corpo-Parser:

Un nuovo oggetto corpo contenente i dati analizzati viene popolato sull'oggetto richiesta dopo che il middleware (cioè req.body). Questo oggetto conterrà coppie chiave-valore, dove il valore può essere una stringa o un array (quando esteso è falso), o qualsiasi tipo (quando esteso è vero).

E

L'opzione estesa permette di scegliere tra l'analisi dei dati con codifica URL con la libreria querystring (se false) o la libreria qs (se vero). La sintassi "estesa" consente la codifica di oggetti e array ricchi nel formato con codifica URL, consentendo un'esperienza simile a JSON con codifica URL. Per ulteriori informazioni, consultare la libreria qs.

Fondamentalmente esteso consente di analizzare gli oggetti completi.

Body Parser: Url Encoded

+0

Potete fornire qualche esempio? –

3

Se bodyParser.urlencoded({ extended: true }), i dati con codifica URL vengono analizzati con qs library. La sintassi "estesa" consente agli oggetti e agli array ricchi didi essere codificati nel formato con codifica URL, consentendo un'esperienza simile a JSON con codifica URL.

qs ti consente di creare oggetti nidificati all'interno dei vostri stringhe di query, racchiudendo il nome di sotto-chiavi con parentesi quadre [].

Ad esempio, la stringa 'person[name]=bobby' e 'person[age]=3' verrà convertito in:

person: { 
    name: 'bobby', 
    age: 3 
} 

Se bodyParser.urlencoded({ extended: false }), i dati codifica URL viene analizzato con il querystring library.

Ad esempio, la stringa 'person[name]=bobby' e 'person[age]=3' saranno convertiti in:

'name=bobby&age=3' 
+1

Per ulteriori spiegazioni, puoi fare riferimento a [risposta di Leonid Beschastny] (https: //stackoverflow.com/a/29177740/3290143) –

+0

https://stackoverflow.com/questions/29960764/what-does-extended-mean-in-express-4-0 –