Об этом проекте

qs — широко используемая библиотека JavaScript для разбора и сериализации строк запросов с поддержкой вложенных объектов, массивов и различных параметров форматирования. Изначально созданная TJ Holowaychuk, а ныне поддерживаемая Jordan Harband, она обеспечивает надёжную обработку параметров URL-запросов, часто встречающихся в веб-приложениях и API. Основная функциональность библиотеки сосредоточена на двух главных операциях: разборе строк запросов в объекты JavaScript и преобразовании объектов обратно в строки запросов. Разбор поддерживает вложенные структуры объектов с использованием скобочной нотации (например, 'foo[bar]=baz' превращается в { foo: { bar: 'baz' } }), с настраиваемыми ограничениями глубины (по умолчанию 5 уровней) для предотвращения злоупотреблений при глубоко вложенных входных данных. Массивы можно разбирать с использованием скобочной нотации ('a[]=b&a[]=c') или индексной нотации ('a[0]=b&a[1]=c'), с автоматическим уплотнением разреженных массивов и настраиваемыми ограничениями массивов (по умолчанию 20 элементов). Функции безопасности заметно встроены в qs. Библиотека применяет ограничения глубины, ограничения параметров (по умолчанию 1000) и ограничения массивов для смягчения потенциальных злоупотреблений при разборе недоверенных входных данных. Опция strictDepth может выбрасывать ошибки при превышении ограничений глубины, а throwOnLimitExceeded предоставляет описательные ошибки для любых нарушений ограничений. Защита от загрязнения прототипа обеспечивается через опцию plainObjects (создание объектов с нулевым прототипом) или allowPrototypes (которую следует использовать с осторожностью). Библиотека также поддерживает определение кодировки через charsetSentinel для обработки сценариев устаревших кодировок. Параметры конфигурации обширны и охватывают настройку разделителей (строка или регулярное выражение), поддержку точечной нотации (allowDots), разбор массивов, разделённых запятыми, стратегии обработки дублирующихся ключей (combine, first, last) и различные настройки кодирования/декодирования. Функция stringify поддерживает несколько форматов массивов (indices, brackets, repeat, comma), пользовательские кодировщики/декодировщики, сериализацию дат, сортировку ключей и фильтрацию. Такие опции, как encodeValuesOnly, addQueryPrefix и allowEmptyArrays, обеспечивают тонкий контроль над форматированием вывода. Библиотека предназначена для использования в средах Node.js и часто интегрируется в веб-фреймворки, такие как Express, для обработки параметров запросов. Её всеобъемлющий набор функций, соображения безопасности и обширная документация делают её надёжным выбором для обработки строк запросов в производственных приложениях.