Что означает "расширенный" в express 4.0?

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

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

но что означает "расширенный" в express 4.0?

Я нашел это

extended - parse extended syntax with the qs module.

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

3 ответов


если extended is false, вы не можете создавать "вложенные объекты"

person[name] = 'cw'

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

если extended is true, вы можете делать все, что вам нравится.


из Body-Parser docs:

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

и

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

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

Синтаксический Анализатор Тела: Url Encoded


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

наоборот,

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


разница между 'QS library` и' querystring библиотека`

  • 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 против строки запроса.