La query string d'une URL est le format de transport de données le plus simple qui soit : une liste de paires clé=valeur séparées par des esperluettes. Mais cette simplicité devient un problème dès qu'il faut transmettre autre chose qu'une liste plate de chaînes.
Pourquoi la query string est limitée
Ce format a été conçu à l'origine pour les formulaires HTML simples et n'a aucune notion native de types de données, d'imbrication ou de tableaux. Tout y est du texte, donc le nombre 42 et la chaîne "42" sont indiscernables tant qu'un code ne les interprète pas explicitement.
Encoder des tableaux : la convention héritée de Symfony
Le framework Symfony, développé par la société française SensioLabs puis par la fondation Symfony, a largement structuré les conventions modernes de l'écosystème PHP en France et au-delà — Laravel lui-même (qui fait tourner ce site) réutilise plusieurs composants Symfony. PHP interprète nativement tags[]=a&tags[]=b comme un tableau, et filtre[status]=actif comme une structure imbriquée, sans bibliothèque additionnelle. D'autres écosystèmes suivent des conventions différentes : ASP.NET attend généralement la même clé répétée sans crochets (tags=a&tags=b). Si le client et le serveur ne s'accordent pas sur la convention, les données du tableau se perdent ou sont corrompues silencieusement.
Pourquoi JSON résout ce problème
JSON dispose de types natifs (nombres, booléens, null) et prend nativement en charge les objets et tableaux imbriqués, sans aucune convention d'encodage nécessaire. C'est pourquoi les données complexes dans le corps d'une requête POST sont généralement envoyées en JSON, la query string restant réservée aux paramètres simples et plats comme des filtres ou un numéro de page.
À quoi ça sert
- Vérifier exactement comment le backend attend de recevoir un paramètre tableau dans la query string.
- Convertir les paramètres d'une URL en JSON pour faciliter le débogage.
- Comprendre pourquoi une structure de données complexe est mieux transmise hors des paramètres GET.
Limite de longueur d'une URL
La plupart des navigateurs et serveurs limitent la longueur d'une URL à environ 2000 caractères (la valeur exacte varie selon le navigateur et le serveur web), donc la query string n'est physiquement pas adaptée au transport de gros volumes de données. C'est une raison supplémentaire pour laquelle les requêtes POST avec un corps JSON sont le choix standard pour les formulaires complexes ou les données en tableau, tandis que le GET avec query string reste réservé aux paramètres courts et simples.