¿Qué es Query String? Guía completa de parámetros URL

¿Alguna vez has mirado una URL súper larga llena de símbolos raros y has pensado "¿qué diablos es todo esto después del ?"? Yo sí, mil veces. Esos caracteres que parecen jeroglificos modernos en realidad son una de las herramientas más útiles de la web. Te voy a contar todo sobre los Query Strings y cómo dominarlos para hacer que tus apps sean más dinámicas y funcionales.
Query String: ese "código secreto" de las URLs
Un Query String es básicamente la forma que tiene la web de enviar información extra a través de las URLs. Es esa parte que viene después del símbolo ? y que está llena de pares clave-valor separados por &.
Si tradujo esto al español normal sería: "Oye servidor, busca cosas de javascript, en la categoría programación, y ordénamelas por fecha". Súper práctico, ¿no?
En este ejemplo:
- termino=javascript le dice qué buscar
- categoria=programacion especifica dónde buscar
- ordenar=fecha indica cómo ordenar los resultados
La anatomía de un Query String (sin que te duela)
Los ingredientes básicos
Todo Query String tiene esta estructura súper simple:
Los elementos que necesitas conocer:
- El ? inicial: Como diciendo "ey, aquí vienen los parámetros"
- Pares clave-valor: clave=valor donde vive la información real
- El separador &: Para dividir múltiples parámetros
- Codificación URL: Los espacios se convierten en %20 y otras cosas raras
Un ejemplo del mundo real
Esto le está diciendo al servidor: "Dame todas las laptops gaming entre $500 y $2000, de la marca ASUS". Simple y directo.
¿Cómo funciona esta magia por dentro?
Del lado del servidor (lo que no ves)
Cuando mandas una URL con Query String, el servidor hace este proceso:
- Recibe tu petición (como un mesero que toma tu pedido)
- Separa la URL de los parámetros
- Descompone los parámetros en pedacitos útiles
- Procesa tu solicitud según lo que pediste
- Te devuelve exactamente lo que buscabas
Del lado del navegador (donde sí tienes control)
Los navegadores modernos hacen que trabajar con Query Strings sea súper fácil:
// URL actual: https://ejemplo.com?usuario=juan&edad=25
// Obtener todos los parámetros
const params = new URLSearchParams(window.location.search);
// Leer valores específicos
const usuario = params.get('usuario'); // "juan"
const edad = params.get('edad'); // "25"
Cómo manipular Query Strings como un pro
Leer parámetros (lo que más vas a usar)
// Método moderno con URLSearchParams
const urlParams = new URLSearchParams(window.location.search);
// Obtener un parámetro específico
const categoria = urlParams.get('categoria');
// Verificar si existe un parámetro
if (urlParams.has('filtro')) {
console.log('Filtro aplicado');
}
// Obtener todos los parámetros
urlParams.forEach((valor, clave) => {
console.log(`${clave}: ${valor}`);
});
Crear y modificar parámetros (súper útil)
// Crear nuevo URLSearchParams
const params = new URLSearchParams();
// Agregar parámetros
params.append('producto', 'smartphone');
params.append('marca', 'apple');
params.append('color', 'negro');
// Construir URL completa
const nuevaURL = `${window.location.pathname}?${params.toString()}`;
// Actualizar URL sin recargar página
window.history.pushState({}, '', nuevaURL);
Eliminar parámetros molestos
const params = new URLSearchParams(window.location.search);
// Eliminar parámetro específico
params.delete('filtro_temporal');
// Actualizar URL
const urlSinParametro = `${window.location.pathname}?${params.toString()}`;
window.history.replaceState({}, '', urlSinParametro);
Casos reales donde brillan los Query Strings
1. Sistemas de búsqueda (mi favorito)
// Búsqueda con múltiples filtros
const construirURLBusqueda = (termino, categoria, ordenar) => {
const params = new URLSearchParams();
if (termino) params.append('q', termino);
if (categoria) params.append('cat', categoria);
if (ordenar) params.append('sort', ordenar);
return `/buscar?${params.toString()}`;
};
2. Paginación (clásico pero efectivo)
// Navegación entre páginas
const cambiarPagina = (numeroPagina) => {
const params = new URLSearchParams(window.location.search);
params.set('pagina', numeroPagina);
window.location.search = params.toString();
};
3. Filtros dinámicos (para e-commerce)
// Aplicar filtros dinámicos
const aplicarFiltros = (filtros) => {
const params = new URLSearchParams();
Object.entries(filtros).forEach(([clave, valor]) => {
if (valor) params.append(clave, valor);
});
window.history.pushState({}, '', `?${params.toString()}`);
};
El tema de los caracteres especiales (que siempre confunde)
Caracteres que dan problemas
Los Query Strings tienen que codificar los caracteres especiales porque las URLs son quisquillosas:
// Caracteres problemáticos
const textoConEspacios = "búsqueda con espacios";
const textoConCaracteresEspeciales = "búsqueda & filtros";
// Codificación automática con URLSearchParams
const params = new URLSearchParams();
params.append('buscar', textoConEspacios);
params.append('filtro', textoConCaracteresEspeciales);
console.log(params.toString());
// buscar=b%C3%BAsqueda+con+espacios&filtro=b%C3%BAsqueda+%26+filtros
Decodificar cuando sea necesario
// Decodificar manualmente si es necesario
const valorCodificado = "b%C3%BUsqueda+con+espacios";
const valorDecodificado = decodeURIComponent(valorCodificado.replace(/\+/g, ' '));
console.log(valorDecodificado); // "búsqueda con espacios"
Lo que he aprendido trabajando con Query Strings
1. Siempre valida los parámetros
const obtenerParametroSeguro = (nombre, valorPorDefecto = '') => {
const params = new URLSearchParams(window.location.search);
const valor = params.get(nombre);
return valor || valorPorDefecto;
};
2. Ojo con la longitud de las URLs
Los navegadores tienen límites, y es importante conocerlos:
- Internet Explorer: 2,048 caracteres (sí, todavía importa)
- Chrome/Firefox: ~8,000 caracteres (bastante generosos)
- Mi recomendación: Mantén todo bajo 2,000 caracteres para estar seguro
3. Nunca pongas información sensible (por favor)
// ❌ Nunca hagas esto
const urlMala = `/perfil?password=123456&token=abc123`;
// ✅ Esto sí está bien
const urlBuena = `/perfil?usuario_id=123&tab=configuracion`;
Lo importante es recordar que los Query Strings son visibles para todos. Cualquiera puede ver la URL, así que nada de passwords ni tokens secretos ahí.
Mi experiencia personal con Query Strings
En mis proyectos, los Query Strings se han vuelto indispensables para crear interfaces que los usuarios realmente puedan compartir y marcar como favoritos. Es súper satisfactorio cuando un usuario puede enviar un enlace directo a una búsqueda específica o a una página filtrada.
Una de las cosas que más me gusta es que hacen que las aplicaciones web se sientan más "como la web debería ser" - URLs que significan algo, que puedes compartir, y que mantienen el estado de tu aplicación.
El truco está en encontrar el equilibrio entre funcionalidad y simplicidad. No necesitas exponer cada detalle interno de tu app en la URL, pero sí los estados que realmente importan para la experiencia del usuario.
Query Strings son esa herramienta que una vez que la dominas, te preguntas cómo vivías sin ella. Te permiten crear aplicaciones más intuitivas, compartibles y funcionales, manteniendo URLs que realmente significan algo.
¿Ya has usado Query Strings en tus proyectos? ¿Tienes algún truco especial o te has topado con algún problema raro? Me encantaría escuchar tu experiencia con esta herramienta tan práctica pero a veces subestimada.
Comentarios
Posts relacionados

¿Qué es Vue.js? Guía completa del framework progresivo
Descubre Vue.js, el framework progresivo de JavaScript para crear interfaces de usuario. Aprende su sintaxis, características y casos de uso.

¿Qué es TypeScript? Guía completa del superset de JavaScript
Aprende TypeScript, el superset tipado de JavaScript que mejora tu código. Descubre sus características, ventajas y cómo empezar a usarlo.