À propos du projet
qs est une bibliothèque JavaScript largement utilisée pour analyser et sérialiser des chaînes de requête avec prise en charge d'objets imbriqués, de tableaux et de diverses options de formatage. Créée à l'origine par TJ Holowaychuk et désormais maintenue par Jordan Harband, elle offre une gestion robuste des paramètres de requête URL couramment rencontrés dans les applications web et les API.
Les fonctionnalités principales de la bibliothèque s'articulent autour de deux opérations : l'analyse de chaînes de requête en objets JavaScript et la sérialisation d'objets en chaînes de requête. L'analyse prend en charge les structures d'objets imbriqués à l'aide de la notation entre crochets (par exemple, 'foo[bar]=baz' devient { foo: { bar: 'baz' } }), avec des limites de profondeur configurables (5 niveaux par défaut) pour prévenir les abus liés à des entrées profondément imbriquées. Les tableaux peuvent être analysés à l'aide de la notation entre crochets ('a[]=b&a[]=c') ou de la notation indexée ('a[0]=b&a[1]=c'), avec compactage automatique des tableaux creux et des limites de tableaux configurables (20 éléments par défaut).
Des fonctionnalités de sécurité sont intégrées de manière prominente dans qs. La bibliothèque applique des limites de profondeur, des limites de paramètres (1000 par défaut) et des limites de tableaux afin d'atténuer les abus potentiels lors de l'analyse d'entrées non fiables. L'option strictDepth peut lever des erreurs lorsque les limites de profondeur sont dépassées, et throwOnLimitExceeded fournit des erreurs descriptives pour toute violation de limite. La protection contre la pollution de prototype est assurée via l'option plainObjects (création d'objets à prototype nul) ou allowPrototypes (à utiliser avec prudence). La bibliothèque prend également en charge la détection de jeu de caractères via charsetSentinel pour gérer les scénarios d'encodage hérités.
Les options de configuration sont étendues, couvrant la personnalisation du délimiteur (chaîne ou expression régulière), la prise en charge de la notation par points (allowDots), l'analyse de tableaux séparés par des virgules, les stratégies de gestion des clés dupliquées (combine, first, last) et diverses personnalisations d'encodage/décodage. La fonction stringify prend en charge plusieurs formats de tableaux (indices, crochets, repeat, comma), des encodeurs/décodeurs personnalisés, la sérialisation des dates, le tri des clés et le filtrage. Des options telles que encodeValuesOnly, addQueryPrefix et allowEmptyArrays offrent un contrôle précis sur le formatage de sortie.
La bibliothèque est conçue pour être utilisée dans des environnements Node.js et est couramment intégrée dans des frameworks web comme Express pour gérer les paramètres de requête des requêtes. Son ensemble complet de fonctionnalités, ses considérations de sécurité et sa documentation étendue en font un choix fiable pour la gestion des chaînes de requête dans les applications de production.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.