Что означает «расширенный» в Express 4.0?

87

Я использую экспресс, а также парсер тела в своем приложении.

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

Но что означает «расширенный» в Express 4.0?

я нашел это

extended - parse extended syntax with the qs module.

Однако я до сих пор не могу понять, что это значит.

KimCrab
источник

Ответы:

76

Если extendedсвойство установлено в значение true, данные в кодировке URL будут анализироваться библиотекой qs .

Наоборот,

если для extendedсвойства установлено значение false, данные в кодировке URL будут анализироваться библиотекой запросов .


Различия между парсингом `qs library` и` querystring 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 vs query-string .

Эндрю Лам
источник
1
должен быть выбранный ответ
nishi
21

Из документов Body-Parser:

Новый объект тела, содержащий проанализированные данные, заполняется в объекте запроса после промежуточного программного обеспечения (т.е. req.body). Этот объект будет содержать пары «ключ-значение», где значение может быть строкой или массивом (если расширенный - ложь) или любого типа (если расширенный - истина).

А также

Расширенная опция позволяет выбирать между анализом данных в кодировке URL с помощью библиотеки querystring (если false) или библиотеки qs (если true). «Расширенный» синтаксис позволяет кодировать богатые объекты и массивы в формат с кодировкой URL, что позволяет работать с кодировкой URL в стиле JSON. Для получения дополнительной информации см. Библиотеку qs.

В основном расширенный позволяет анализировать полные объекты.

Парсер тела: URL-адрес закодирован

Логан Тегман
источник