2015-04-30 3 views
23

Я использую экспресс, а также body-parser в своем приложении.Что означает «расширенный» в выражении 4.0?

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

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

Я нашел это

extended - parse extended syntax with the qs module. 

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

ответ

39

extended Если это false, вы не можете "вложенный объект"

person[name] = 'cw' 

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

extended Если это true, вы можете делать все, что путь, который вам нравится.

+2

Хорошо, хороший пример! – htafoya

+0

@htafoya рад, что я могу hlep –

+0

Спасибо братан :) @WayneChiu –

13

Из документов Тела-Parser:

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

И

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

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

Body Parser: Url Encoded

+0

Можете ли вы предоставить некоторые примеры? –

3

Если bodyParser.urlencoded({ extended: true }), данные, кодированные URL, обрабатываются qs library. Синтаксис «расширенный» позволяет использовать богатые объекты и массивы для кодирования в формате URL-кодирования, что позволяет использовать JSON-подобный опыт с кодировкой URL.

QS позволяет создавать вложенные объекты в пределах ваших строк запроса, окружив имя суб-ключей с помощью квадратных скобок [].

Например, строка 'person[name]=bobby' и 'person[age]=3' будут преобразованы в:

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

Если bodyParser.urlencoded({ extended: false }), данные URL-кодированный анализируется с querystring library.

Например, строка 'person[name]=bobby' и 'person[age]=3' будут преобразованы в:

'name=bobby&age=3' 
+1

Для более подробного объяснения вы можете обратиться к [Ответу Леонида Бесчастного] (https: //stackoverflow.com/a/29177740/3290143) –

+0

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