Module querystring de Node.js
querystring est un module intégré de base de Node.js, utilisé spécifiquement pour analyser et formater les chaînes de requête d'URL. Une chaîne de requête est la partie d'une URL après le point d'interrogation (?), généralement composée de paires clé-valeur, par exemple :?name=John&age=30。
Ce module est très pratique dans des scénarios tels que la transmission de données entre le front-end et le back-end et le développement d'API, aidant les développeurs à gérer facilement les paramètres d'URL.
Méthodes principales expliquées
querystring.parse(str[, sep[, eq[, options]]])
Analyse une chaîne de requête en un objet JavaScript.
Description des paramètres :
str: La chaîne de requête à analysersep(Facultatif) : Séparateur utilisé pour délimiter les paires clé-valeur, par défaut'&'eq(Facultatif) : Séparateur utilisé pour délimiter les clés et les valeurs, par défaut'='options(Facultatif) : Objet de configurationmaxKeys: Spécifie le nombre maximal de clés à analyser, par défaut 1000decodeURIComponent: Fonction utilisée pour le décodage, par défautquerystring.unescape()
Exemple de code :
Exemple
const query = 'name=John&age=30&city=New+York';
const parsed = querystring.parse(query);
console.log(parsed);
// Sortie : { name: 'John', age: '30', city: 'New York' }
querystring.stringify(obj[, sep[, eq[, options]]])
Sérialise un objet JavaScript en une chaîne de requête.
Description des paramètres :
obj: L'objet à sérialisersep(Facultatif) : Séparateur de paires clé-valeur, par défaut'&'eq(Facultatif) : Séparateur clé-valeur, par défaut'='options(Facultatif) : Objet de configurationencodeURIComponent: Fonction utilisée pour l'encodage, par défautquerystring.escape()
Exemple de code :
Exemple
const obj = {
name: 'John Doe',
age: 25,
occupation: 'Software Developer'
};
const stringified = querystring.stringify(obj);
console.log(stringified);
// Sortie : 'name=John%20Doe&age=25&occupation=Software%20Developer'
querystring.escape(str) et querystring.unescape(str)
Ces deux méthodes sont utilisées pour encoder et décoder les caractères spéciaux dans les chaînes de requête, respectivement.
Exemple de code :
Exemple
const str = 'Hello World!';
const escaped = querystring.escape(str);
console.log(escaped); // Sortie : 'Hello%20World%21'
const unescaped = querystring.unescape(escaped);
console.log(unescaped); // Sortie : 'Hello World!'
Scénarios d'application pratiques
1. Gestion des paramètres de requête GET
Exemple
const querystring = require('querystring');
http.createServer((req, res) => {
if (req.url.includes('?')) {
const queryString = req.url.split('?')[1];
const params = querystring.parse(queryString);
console.log(params);
res.end(`Paramètres reçus: ${JSON.stringify(params)}`);
} else {
res.end('Aucun paramètre de requête reçu');
}
}).listen(3000);
2. Construction de chaînes de requête d'API
Exemple
const apiParams = {
q: 'node.js',
page: 1,
limit: 10,
sort: 'desc'
};
const apiUrl = `https://api.example.com/search?${querystring.stringify(apiParams)}`;
console.log(apiUrl);
// Sortie : 'https://api.example.com/search?q=node.js&page=1&limit=10&sort=desc'
Remarques importantes
Problèmes d'encodage: Par défaut, querystring encode/décode les caractères spéciaux. Si vous devez personnaliser la méthode d'encodage, vous pouvez passer
encodeURIComponentoudecodeURIComponentfonction.Types de données: Toutes les valeurs analysées sont de type chaîne et doivent être converties manuellement en d'autres types (tels que nombres, booléens, etc.).
Objets imbriqués: Le module querystring ne prend pas en charge l'analyse ou la sérialisation d'objets imbriqués. Si vous devez gérer des structures de données complexes, vous pouvez envisager d'utiliser le format JSON.
Caractères sûrs pour les URL: Les espaces sont encodés comme
+au lieu de%20, ce qui est différent deencodeURIComponentdans le comportement.
Alternatives
Bien que le module querystring soit très pratique, les versions récentes de Node.js recommandent d'utiliser les API URL et URLSearchParams, qui offrent des fonctionnalités de gestion d'URL plus modernes et complètes.
Exemple
const params = new URLSearchParams('name=John&age=30');
console.log(params.get('name')); // Sortie : 'John'
Résumé
Le module querystring est un outil puissant pour gérer les chaînes de requête dans Node.js, particulièrement adapté au traitement de données simples de paires clé-valeur. Maîtriser ses méthodes principales (parse, stringify, escape, unescape) peut grandement améliorer l'efficacité du développement. Pour des besoins de traitement d'URL plus complexes, vous pouvez envisager d'utiliser les API URL et URLSearchParams.
Autres extensions
Modules intégrés de Node.js