Skip to content

Chaîne de requête

[Stable: 2 - Stable]

Stable: 2 Stabilité: 2 - Stable

Code source: lib/querystring.js

Le module node:querystring fournit des utilitaires pour analyser et formater les chaînes de requête d'URL. Il est accessible en utilisant :

js
const querystring = require('node:querystring');

querystring est plus performant que <URLSearchParams> mais n'est pas une API standardisée. Utilisez <URLSearchParams> lorsque les performances ne sont pas critiques ou lorsque la compatibilité avec le code du navigateur est souhaitable.

querystring.decode()

Ajouté dans : v0.1.99

La fonction querystring.decode() est un alias de querystring.parse().

querystring.encode()

Ajouté dans : v0.1.99

La fonction querystring.encode() est un alias de querystring.stringify().

querystring.escape(str)

Ajouté dans : v0.1.25

La méthode querystring.escape() effectue un encodage en pourcentage d'URL sur le str donné d'une manière optimisée pour les exigences spécifiques des chaînes de requête d'URL.

La méthode querystring.escape() est utilisée par querystring.stringify() et n'est généralement pas censée être utilisée directement. Elle est exportée principalement pour permettre au code de l'application de fournir une implémentation de codage en pourcentage de remplacement si nécessaire en affectant querystring.escape à une autre fonction.

querystring.parse(str[, sep[, eq[, options]]])

[Historique]

VersionModifications
v8.0.0Plusieurs entrées vides sont maintenant analysées correctement (par exemple, &=&=).
v6.0.0L'objet retourné n'hérite plus de Object.prototype.
v6.0.0, v4.2.4Le paramètre eq peut désormais avoir une longueur supérieure à 1.
v0.1.25Ajouté dans : v0.1.25
  • str <string> La chaîne de requête d'URL à analyser
  • sep <string> La sous-chaîne utilisée pour délimiter les paires clé/valeur dans la chaîne de requête. Par défaut : '&'.
  • eq <string>. La sous-chaîne utilisée pour délimiter les clés et les valeurs dans la chaîne de requête. Par défaut : '='.
  • options <Object>
    • decodeURIComponent <Function> La fonction à utiliser lors du décodage des caractères encodés en pourcentage dans la chaîne de requête. Par défaut : querystring.unescape().
    • maxKeys <number> Spécifie le nombre maximal de clés à analyser. Spécifiez 0 pour supprimer les limitations de comptage des clés. Par défaut : 1000.

La méthode querystring.parse() analyse une chaîne de requête d'URL (str) en une collection de paires clé/valeur.

Par exemple, la chaîne de requête 'foo=bar&abc=xyz&abc=123' est analysée en :

json
{
  "foo": "bar",
  "abc": ["xyz", "123"]
}

L'objet renvoyé par la méthode querystring.parse() n'hérite pas prototypiquement de l'objet Object JavaScript. Cela signifie que les méthodes Object typiques telles que obj.toString(), obj.hasOwnProperty() et autres ne sont pas définies et ne fonctionneront pas.

Par défaut, les caractères encodés en pourcentage dans la chaîne de requête seront supposés utiliser l'encodage UTF-8. Si un autre encodage de caractères est utilisé, une option decodeURIComponent alternative devra être spécifiée :

js
// En supposant que la fonction gbkDecodeURIComponent existe déjà...

querystring.parse('w=%D6%D0%CE%C4&foo=bar', null, null,
                  { decodeURIComponent: gbkDecodeURIComponent });

querystring.stringify(obj[, sep[, eq[, options]]])

Ajouté dans: v0.1.25

  • obj <Object> L'objet à sérialiser dans une chaîne de requête d'URL
  • sep <string> La sous-chaîne utilisée pour délimiter les paires clé-valeur dans la chaîne de requête. Par défaut : '&'.
  • eq <string>. La sous-chaîne utilisée pour délimiter les clés et les valeurs dans la chaîne de requête. Par défaut : '='.
  • options
    • encodeURIComponent <Function> La fonction à utiliser lors de la conversion des caractères non sécurisés pour les URL en encodage en pourcentage dans la chaîne de requête. Par défaut : querystring.escape().

La méthode querystring.stringify() produit une chaîne de requête d'URL à partir d'un obj donné en itérant sur les "propriétés propres" de l'objet.

Elle sérialise les types de valeurs suivants passés dans obj : <string> | <number> | <bigint> | <boolean> | <string[]> | <number[]> | <bigint[]> | <boolean[]> Les valeurs numériques doivent être finies. Toutes les autres valeurs d'entrée seront converties en chaînes vides.

js
querystring.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' });
// Renvoie 'foo=bar&baz=qux&baz=quux&corge='

querystring.stringify({ foo: 'bar', baz: 'qux' }, ';', ':');
// Renvoie 'foo:bar;baz:qux'

Par défaut, les caractères nécessitant un encodage en pourcentage dans la chaîne de requête seront encodés en UTF-8. Si un encodage alternatif est requis, une option encodeURIComponent alternative devra être spécifiée :

js
// En supposant que la fonction gbkEncodeURIComponent existe déjà,

querystring.stringify({ w: '中文', foo: 'bar' }, null, null,
                      { encodeURIComponent: gbkEncodeURIComponent });

querystring.unescape(str)

Ajouté dans: v0.1.25

La méthode querystring.unescape() effectue le décodage des caractères URL encodés en pourcentage sur le str donné.

La méthode querystring.unescape() est utilisée par querystring.parse() et il n'est généralement pas prévu de l'utiliser directement. Elle est exportée principalement pour permettre au code de l'application de fournir une implémentation de décodage de remplacement si nécessaire en assignant querystring.unescape à une fonction alternative.

Par défaut, la méthode querystring.unescape() tente d'utiliser la méthode JavaScript intégrée decodeURIComponent() pour décoder. Si cela échoue, un équivalent plus sûr qui ne lève pas d'erreur sur les URL mal formées sera utilisé.