Todos los artículos

Query string frente a JSON: por qué los parámetros GET son tan limitados

La query string de una URL es el formato de transmisión de datos más simple que existe: una lista de pares clave=valor separados por &. Pero esa simplicidad se convierte en un problema en cuanto hay que enviar algo más complejo que una lista plana de cadenas de texto.

Por qué la query string es limitada

Este formato se diseñó históricamente para formularios HTML sencillos y no tiene ningún concepto nativo de tipos de datos, anidamiento o arrays. Todo en ella es texto, así que el número 42 y la cadena "42" son indistinguibles hasta que algún código los interpreta explícitamente.

Codificar arrays: la convención de PHP en la comunidad hispanohablante

PHP, a menudo a través de WordPress o de frameworks como Laravel (el mismo que da soporte a este sitio, con una comunidad hispanohablante especialmente activa gracias a su documentación traducida y a eventos como Laracon en varios países de habla hispana), sigue siendo uno de los ecosistemas backend más usados en España y Latinoamérica. PHP interpreta de forma nativa tags[]=a&tags[]=b como un array, y filtro[estado]=activo como una estructura anidada, sin necesitar ninguna librería adicional. Otros ecosistemas siguen convenciones distintas: ASP.NET, por ejemplo, suele esperar la misma clave repetida sin corchetes (tags=a&tags=b). Si el cliente y el servidor no coinciden en la convención, los datos del array simplemente se pierden o se corrompen sin aviso.

Por qué JSON resuelve este problema

JSON tiene tipos nativos (números, booleanos, null) y soporta de forma natural objetos y arrays anidados sin necesitar ninguna convención de codificación. Por eso los datos complejos en el cuerpo de una petición POST suelen enviarse como JSON, mientras que la query string se reserva para parámetros simples y planos como filtros o el número de página.

Para qué sirve

  • Comprobar exactamente en qué formato espera el backend recibir un parámetro de tipo array en la query string.
  • Convertir parámetros de la URL a JSON para facilitar la depuración.
  • Entender por qué una estructura de datos compleja es mejor enviarla fuera de los parámetros GET.

Límite de longitud de la URL

La mayoría de navegadores y servidores limitan la longitud de la URL a unos 2000 caracteres (el valor exacto varía según el navegador y el servidor web), así que la query string no es físicamente apta para transportar grandes volúmenes de datos. Esta es otra razón por la que las peticiones POST con cuerpo JSON son la opción estándar para formularios complejos o datos en array, mientras que el GET con query string queda reservado a parámetros cortos y simples.

Probar la herramienta