Módulo Node.js querystring
Mó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 analizarsep(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ónmaxKeys: especifica el número máximo de claves a analizar, por defecto es 1000decodeURIComponent: función utilizada para decodificar, por defecto esquerystring.unescape()
Código de ejemplo:
Ejemplo
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 serializarsep(Opcional): separador de pares clave-valor, por defecto es'&'eq(Opcional): separador de clave-valor, por defecto es'='options(Opcional): objeto de configuraciónencodeURIComponent: función utilizada para codificar, por defecto esquerystring.escape()
Código de ejemplo:
Ejemplo
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 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 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 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
Problemas de codificación: De forma predeterminada, querystring codifica/decodifica caracteres especiales. Si necesita personalizar el método de codificación, puede pasar
encodeURIComponentodecodeURIComponentuna función.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.).
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.
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
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.
Otras extensiones