Todos os artigos

Query String vs. JSON: por que os parâmetros GET são tão limitados

A query string de uma URL é o formato mais simples que existe para transportar dados: uma lista de pares chave=valor separados por &. Só que essa simplicidade vira um problema assim que é preciso enviar algo mais estruturado do que uma lista plana de textos.

Por que a query string é limitada

O formato foi pensado historicamente para formulários HTML simples e não tem noção nativa de tipos de dados, aninhamento ou arrays. Tudo nela é texto puro, então o número 42 e a string "42" são indistinguíveis até que algum código os interprete explicitamente.

Arrays na query string: a convenção do PHP

O Brasil tem uma das maiores comunidades de desenvolvedores PHP do mundo, muito por causa do WordPress e de frameworks como Laravel (o mesmo usado neste site). O PHP entende nativamente tags[]=a&tags[]=b como um array, e filtro[status]=ativo como uma estrutura aninhada — sem precisar de nenhuma biblioteca extra. Outros ecossistemas seguem convenções diferentes: ASP.NET normalmente espera a mesma chave repetida sem colchetes (tags=a&tags=b), e projetos Node.js costumam depender de uma biblioteca como qs para interpretar a notação com colchetes. Quando cliente e servidor divergem na convenção, os dados do array simplesmente se perdem ou ficam corrompidos.

Por que o JSON resolve isso

O JSON tem tipos nativos (números, booleanos, null) e suporte natural para objetos e arrays aninhados, sem exigir nenhuma convenção de codificação. Por isso dados complexos no corpo de uma requisição POST costumam ser enviados como JSON, enquanto a query string fica reservada para parâmetros simples e planos, como filtros ou número de página.

Para que serve

  • Verificar exatamente como o backend espera receber um parâmetro de array na query string.
  • Converter parâmetros de URL para JSON para facilitar a depuração.
  • Entender por que uma estrutura de dados complexa é melhor enviada fora dos parâmetros GET.

Limite de tamanho da URL

A maioria dos navegadores e servidores limita o tamanho da URL a cerca de 2000 caracteres (o valor exato varia entre navegador e servidor web), então a query string fisicamente não é adequada para transportar grandes volumes de dados. Esse é mais um motivo pelo qual requisições POST com corpo JSON são a escolha padrão para formulários complexos ou dados em array, enquanto GET com query string permanece reservado para parâmetros curtos e simples.

Experimentar a ferramenta