Що означає "розширений" у Express 4.0?


87

Я використовую express, а також body-parser у своєму додатку.

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

Але, що означає "розширений" у Express 4.0?

Я знайшов це

extended - parse extended syntax with the qs module.

Однак я все ще не можу зрозуміти, що це означає.

Відповіді:



76

Коли для extendedвластивості встановлено значення true, дані, закодовані за URL-адресою, будуть проаналізовані з бібліотекою qs .

Навпаки,

коли для extendedвластивості встановлено значення false, дані, закодовані за URL-адресою, замість цього будуть проаналізовані з бібліотекою рядків запитів .


Різниця між синтаксичним аналізом за допомогою `qs library` та` бібліотека запитів рядків`

  • Бібліотека qs дозволяє створити вкладений об'єкт із вашого рядка запиту.

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


  • бібліотека рядків запитів не підтримує створення вкладеного об’єкта із вашого рядка запиту.

    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 не фільтрує '?' з рядка запиту.

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


  • бібліотека рядків запитів відфільтрує '?' з рядка запиту.

    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


Для отримання додаткової інформації ви можете звернутися до відповіді Леоніда Бесчастного та npm порівняти qs проти query-string .



1
повинна бути обрана відповідь
ніші

21

З документації Body-Parser:

Новий об'єкт тіла, що містить аналізовані дані, заповнюється в об'єкті запиту після проміжного програмного забезпечення (тобто req.body). Цей об'єкт буде містити пари ключ-значення, де значенням може бути рядок або масив (коли розширено не так), або будь-який тип (коли розширено істинно).

І

Розширена опція дозволяє вибирати між синтаксичним аналізом даних, закодованих за URL-адресою, за допомогою бібліотеки рядків запитів (коли false) або бібліотеки qs (коли true). "Розширений" синтаксис дозволяє кодувати розширені об'єкти та масиви у форматі, закодованому за URL-адресою, що дозволяє отримати подібний до JSON досвід із URL-кодуванням. Для отримання додаткової інформації див. Бібліотеку qs.

В основному розширений дозволяє проаналізувати цілі об'єкти.

Парсер тіла: Зашифрована URL-адреса

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.