Módulo Node.js querystring

Java FileMódulos incorporados de Node.js


querystring es un módulo central incorporado en Node.js, especialmente utilizado para analizar y formatear cadenas de consulta (query string) de URL. La cadena de consulta es la parte después del signo de interrogación (?) en la URL, generalmente compuesta por pares clave-valor, por ejemplo:?name=John&age=30。

Este módulo es muy útil en escenarios como la transmisión de datos entre el frontend y el backend, el desarrollo de API, etc., y ayuda a los desarrolladores a manejar fácilmente los parámetros de URL.


Análisis de métodos principales

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

Analiza la cadena de consulta en un objeto de JavaScript.

Descripción de parámetros:

  • str: la cadena de consulta a analizar
  • sep(Opcional): separador utilizado para dividir pares clave-valor, por defecto es'&'
  • eq(Opcional): separador utilizado para dividir clave y valor, por defecto es'='
  • options(Opcional): objeto de configuración
    • maxKeys: especifica el número máximo de claves a analizar, por defecto es 1000
    • decodeURIComponent: función utilizada para decodificar, por defecto esquerystring.unescape()

Código de ejemplo:

Ejemplo

const querystring = require('querystring');

const query = 'name=John&age=30&city=New+York';
const parsed = querystring.parse(query);

console.log(parsed);
// Salida: { name: 'John', age: '30', city: 'New York' }

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

Serializa un objeto de JavaScript en una cadena de consulta.

Descripción de parámetros:

  • obj: el objeto a serializar
  • sep(Opcional): separador de pares clave-valor, por defecto es'&'
  • eq(Opcional): separador de clave-valor, por defecto es'='
  • options(Opcional): objeto de configuración
    • encodeURIComponent: función utilizada para codificar, por defecto esquerystring.escape()

Código de ejemplo:

Ejemplo

const querystring = require('querystring');

const obj = {
  name: 'John Doe',
  age: 25,
  occupation: 'Software Developer'
};

const stringified = querystring.stringify(obj);
console.log(stringified);
// Salida: 'name=John%20Doe&age=25&occupation=Software%20Developer'

querystring.escape(str) y querystring.unescape(str)

Estos dos métodos se utilizan respectivamente para codificar y decodificar caracteres especiales en cadenas de consulta.

Código de ejemplo:

Ejemplo

const querystring = require('querystring');

const str = 'Hello World!';
const escaped = querystring.escape(str);
console.log(escaped); // Salida: 'Hello%20World%21'

const unescaped = querystring.unescape(escaped);
console.log(unescaped); // Salida: 'Hello World!'

Escenarios de aplicación práctica

1. Manejo de parámetros de solicitud GET

Ejemplo

const http = require('http');
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(`Received parameters: ${JSON.stringify(params)}`);
  } else {
    res.end('No query parameters received');
  }
}).listen(3000);

2. Construcción de cadenas de consulta de API

Ejemplo

const querystring = require('querystring');

const apiParams = {
  q: 'node.js',
  page: 1,
  limit: 10,
  sort: 'desc'
};

const apiUrl = `https://api.example.com/search?${querystring.stringify(apiParams)}`;
console.log(apiUrl);
// Salida: 'https://api.example.com/search?q=node.js&page=1&limit=10&sort=desc'

Precauciones

  1. Problemas de codificación: De forma predeterminada, querystring codifica/decodifica caracteres especiales. Si necesita personalizar el método de codificación, puede pasarencodeURIComponentodecodeURIComponentuna función.

  2. Tipos de datos: Todos los valores analizados son de tipo cadena (string), y es necesario convertirlos manualmente a otros tipos (como números, booleanos, etc.).

  3. Objetos anidados: El módulo querystring no admite el análisis ni la serialización de objetos anidados. Si necesita manejar estructuras de datos complejas, puede considerar usar el formato JSON.

  4. Caracteres seguros en URL: Los espacios se codifican como+en lugar de%20, esto difiere delencodeURIComponentcomportamiento.


Alternativas

Aunque el módulo querystring es muy práctico, las versiones más recientes de Node.js recomiendan usar las API URL y URLSearchParams, que ofrecen funciones de manejo de URL más modernas y completas.

Ejemplo

// Ejemplo de uso de URLSearchParams
const params = new URLSearchParams('name=John&age=30');
console.log(params.get('name')); // Salida: 'John'

Resumen

El módulo querystring es una herramienta poderosa en Node.js para manejar cadenas de consulta, especialmente adecuada para procesar datos simples de pares clave-valor. Dominar sus métodos principales (parse, stringify, escape, unescape) puede mejorar en gran medida la eficiencia del desarrollo. Para necesidades de manejo de URL más complejas, se puede considerar usar las API URL y URLSearchParams.

Java FileMódulos incorporados de Node.js

Otras extensiones