O que significa 'estendido' no expresso 4.0?

87

Estou usando express e também analisador de corpo em meu aplicativo.

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

Mas, o que significa 'estendido' no expresso 4.0?

Eu achei isto

extended - parse extended syntax with the qs module.

No entanto, ainda não consigo entender o que isso significa.

KimCrab
fonte

Respostas:

76

Quando a extendedpropriedade é definida como true, os dados codificados por URL serão analisados ​​com a biblioteca qs .

Pelo contrário,

quando a extendedpropriedade é definida como false, os dados codificados por URL serão analisados ​​com a biblioteca de querystring .


As diferenças entre a análise com `biblioteca qs` e` biblioteca querystring`

  • A biblioteca qs permite que você crie um objeto aninhado a partir de sua string de consulta.

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


  • a biblioteca de string de consulta não oferece suporte à criação de um objeto aninhado a partir de sua string de consulta.

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


  • A biblioteca qs não filtrará '?' da string de consulta.

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


  • a biblioteca de string de consulta filtrará '?' da string de consulta.

    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


Para obter mais informações, você pode consultar a resposta de Leonid Beschastny e npm compare qs vs query-string .

Andrew Lam
fonte
1
deve ser a resposta selecionada
nishi
21

Dos documentos do Body-Parser:

Um novo objeto de corpo contendo os dados analisados ​​é preenchido no objeto de solicitação após o middleware (ou seja, req.body). Este objeto conterá pares de valores-chave, onde o valor pode ser uma string ou array (quando estendido é falso) ou qualquer tipo (quando estendido é verdadeiro).

E

A opção estendida permite escolher entre analisar os dados codificados por URL com a biblioteca querystring (quando falso) ou a biblioteca qs (quando verdadeiro). A sintaxe "estendida" permite que objetos e matrizes ricos sejam codificados no formato codificado por URL, permitindo uma experiência semelhante a JSON com codificação por URL. Para obter mais informações, consulte a biblioteca qs.

Basicamente estendido permite que você analise objetos completos.

Analisador de corpo: URL codificado

Logan Tegman
fonte