body-parser — расширенный вариант (qs vs querystring)

В текущей версии body-parser теперь требуется параметр extended при использовании bodyParser.urlencoded(). В README поясняется:

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

[...]

По умолчанию установлено значение true, но использование значения по умолчанию устарело. Пожалуйста, изучите разницу между qs и querystring и выберите соответствующую настройку.

Я не мог найти какой-либо полезной или конкретной информации по этому поводу. Я нашел только устаревшую node-querystring.

Должен ли этот вариант всегда быть правдой?


person c..    schedule 20.03.2015    source источник
comment
stackoverflow.com/a/45690436/3290143   -  person Andrew Lam    schedule 17.04.2018


Ответы (1)


Причина этого сообщения в том, что body-parser собирается изменить значение по умолчанию для extended с true на false< /а>.

Расширенный протокол использует qs библиотеку для анализа x-www-form-urlencoded данных. Основное преимущество qs заключается в том, что он использует очень мощный алгоритм сериализации/десериализации, способный сериализовать любую json-подобную структуру данных.

Но веб-браузеры обычно не используют этот протокол, потому что x-www-form-urlencoded был разработан для сериализации плоских html-форм. Тем не менее, это может пригодиться, если вы собираетесь отправлять расширенные структуры данных, используя ajax.

querystringбиблиотека предоставляет базовый алгоритм сериализации/десериализации, который используется всеми веб-браузерами для сериализации формы. данные. Этот базовый алгоритм значительно проще расширенного, но ограничен плоскими структурами данных.

Оба алгоритма работают одинаково с плоскими данными.

Теперь, когда вы знаете плюсы и минусы обоих алгоритмов, вам решать, какой из них лучше подходит для вашего приложения.

person Leonid Beschastny    schedule 21.03.2015
comment
огромное спасибо. надеюсь, я не просто плохо гуглю, и это поможет кому-то еще - person c..; 21.03.2015
comment
просто хотел бы прокомментировать, что extended: false портит 2D-массивы :( - person woojoo666; 14.07.2015
comment
@ woojoo666 это потому, что базовый алгоритм сериализации/десериализации не поддерживает вложенные структуры данных. - person Leonid Beschastny; 14.07.2015
comment
Да, я знаю, ха-ха, просто хотел сказать это всем коллегам по Google. - person woojoo666; 14.07.2015
comment
stackoverflow.com/ вопросы/29960764/ - person Sunil Garg; 05.12.2017