Skip to content

HTTP QUERY: La solution API que nous attendions depuis 20 ans

Une nouvelle méthode HTTP appelée QUERY est là pour corriger la manière défectueuse dont nous gérons les recherches complexes. Elle met enfin un terme à l'abus de POST pour les API en lecture seule.

Theo Brandt
Hero image for: HTTP QUERY: La solution API que nous attendions depuis 20 ans

En bref / Points clés

  • Une nouvelle méthode HTTP appelée QUERY est là pour corriger la manière défectueuse dont nous gérons les recherches complexes.
  • Elle met enfin un terme à l'abus de POST pour les API en lecture seule.

Le péché sémantique que nous avons tous commis

Pendant des décennies, la récupération de données signifiait souvent l'encodage des paramètres de recherche directement dans la chaîne de requête URL d'une GET request. Cette approche a rapidement échoué avec des recherches complexes impliquant des requêtes relationnelles ou des données profondément imbriquées. Les URL ont gonflé, atteignant fréquemment les limites de longueur des navigateurs ou des serveurs, et exposant tous les paramètres clairement dans les journaux du serveur et l'historique du navigateur.

Pour contourner les contraintes d'URL, les développeurs ont adopté une solution de contournement : utiliser des POST requests pour transporter des filtres de recherche complexes dans le corps de la requête. Cela a cependant créé une violation sémantique significative. `POST` est fondamentalement conçu pour créer de nouvelles ressources, et non pour la récupération sûre et idempotente de données existantes.

L'utilisation abusive de `POST` pour la recherche a eu des conséquences tangibles. Elle a brisé les mécanismes de mise en cache, car les proxys mettent rarement en cache les réponses `POST` en raison de leur nature non-idempotente. De plus, sa caractéristique non-idempotente a empêché les clients d'effectuer en toute sécurité des tentatives automatiques en cas de pannes réseau, une capacité fondamentale des opérations véritablement en lecture seule.

Une tentative moins courante, mais tout aussi problématique, impliquait l'envoi d'un corps de requête avec une méthode `GET`. Bien que la spécification HTTP/1.1 l'ait ambiguëment permis, elle stipulait explicitement qu'un tel corps n'avait "aucune sémantique définie" et "DEVRAIT être ignoré". Cela a fait de "GET with a body" un mythe peu fiable et non standardisé, n'ayant jamais obtenu un soutien cohérent au sein de l'infrastructure web.

QUERY : La sécurité de GET, la puissance de POST

Enfin, la méthode HTTP query (RFC 10008) est arrivée, formellement standardisée en juin 2026. Elle représente la "méthode manquante pour la recherche", conçue spécifiquement pour résoudre les solutions de contournement sémantiques que les développeurs ont utilisées pendant plus de deux décennies. Ce nouveau verbe cible spécifiquement la récupération de données complexes en lecture seule.

Query combine élégamment les meilleurs attributs de ses prédécesseurs. Comme GET, elle est sûre et idempotente, ce qui signifie qu'elle ne modifie jamais l'état du serveur et que des requêtes identiques produisent toujours le même résultat. Cette propriété permet des tentatives robustes côté client en cas d'échec. Surtout, comme POST, elle accepte un corps de requête, offrant un espace suffisant pour les paramètres de requête.

Cette conception hybride résout directement le problème fondamental de la récupération de données riches. Les développeurs peuvent désormais envoyer des structures de requête complexes et profondément imbriquées, telles que des charges utiles JSON, dans le corps de la requête. Cela évite d'atteindre les limites de longueur d'URL du navigateur ou du serveur et empêche l'exposition de paramètres sensibles dans les journaux. Surtout, cela élimine la violation sémantique de l'utilisation de POST pour des opérations ne modifiant pas l'état, offrant enfin une approche standardisée, cacheable et sémantiquement correcte pour les recherches API avancées.

Mise en cache plus intelligente, meilleure sécurité

`QUERY` apporte des avantages opérationnels significatifs au-delà de la correction sémantique, notamment en matière de mise en cache et de sécurité. Sa conception répond aux défis de longue date qui ont affligé `GET` et `POST` dans les scénarios de récupération de données complexes.

Les réponses générées par une méthode `QUERY` sont entièrement cacheable, reflétant l'efficacité de `GET`. Surtout, le corps entier de la requête est directement pris en compte dans la clé de cache. Ce mécanisme sophistiqué garantit que chaque corps de requête unique, quelle que soit l'URI, produit une entrée de cache distincte, facilitant une récupération de données précise et efficace.

Un mécanisme de découverte intégré améliore encore l'utilité de `QUERY` : l'en-tête `Accept-Query`. Les serveurs peuvent désormais annoncer explicitement les formats de requête spécifiques qu'ils prennent en charge, rationalisant la communication client-serveur et améliorant la découvrabilité des API. Les clients obtiennent une clarté sur les syntaxes attendues, réduisant les frictions d'intégration.

La sécurité et la confidentialité connaissent également des améliorations notables. `QUERY` n'est pas une CORS-safelisted method, nécessitant une requête `OPTIONS` de pré-vol pour les appels inter-origines et renforçant la sécurité des applications web. Plus important encore, il maintient les paramètres de requête sensibles hors des URL, empêchant leur exposition dans les journaux de serveur, les enregistrements de proxy et l'historique du navigateur, un gain significatif pour la confidentialité par rapport à `GET`.

Cette conception soignée fait de `QUERY` une solution robuste pour les besoins des API modernes. Pour des spécifications techniques plus approfondies, consultez le RFC 10008: The HTTP QUERY Method, qui détaille toutes ses capacités et implications pour l'architecture web.

Enjoying this? Get one like it in your inbox each morning.

one email a day · unsubscribe in two clicks · no third-party tracking

La voie de l'adoption : un examen de la réalité

`QUERY` (RFC 10008) est désormais formellement standardisé, une étape critique pour la sémantique HTTP. Malgré cette réalisation fondamentale, l'adoption généralisée à travers l'ensemble de l'écosystème web en est encore à ses débuts. Les navigateurs, divers frameworks web et les proxys réseau déploient progressivement leur support pour cette nouvelle méthode, un processus qui prend du temps pour un changement de protocole fondamental.

L'élan est clairement en train de se construire, avec des acteurs clés qui intègrent déjà `QUERY` dans leurs plateformes. OpenAPI 3.2 prend désormais formellement en charge la méthode `QUERY`, permettant aux architectes et développeurs de définir ces nouveaux points de terminaison puissants directement dans leurs spécifications d'API. Le framework .NET 10 de Microsoft fournit également un support initial et robuste, indiquant un signal fort pour une intégration plus large du framework et encourageant l'expérimentation précoce.

Les organisations devraient planifier stratégiquement l'omniprésence éventuelle de `QUERY`. Pour les nouveaux points de terminaison complexes en lecture seule, concevez avec `QUERY` dès le départ, mais implémentez des mécanismes de repli robustes vers `POST` ou `GET` pour la compatibilité. Enfin, préparez-vous à mettre à jour les pare-feu d'applications web (WAFs) et les configurations de proxy existants ; ces systèmes doivent apprendre à interpréter, acheminer et mettre en cache correctement les requêtes `QUERY` pour un fonctionnement sans faille.

Foire aux questions

Qu'est-ce que la nouvelle méthode HTTP QUERY ?

C'est un nouveau verbe HTTP standardisé (RFC 10008) conçu pour la recherche complexe et la récupération de données. Il combine la sécurité et la capacité de mise en cache d'une requête GET avec la capacité de transporter un corps de requête comme une requête POST.

Pourquoi ne pas simplement utiliser GET avec un corps de requête ?

Le comportement d'une requête GET avec un corps est indéfini dans la spécification HTTP. Cela conduit à une gestion incohérente et peu fiable par les serveurs, les proxys et les caches, ce qui en fait une solution peu pratique.

La méthode QUERY est-elle prête pour une utilisation en production ?

Pas encore pour la plupart des applications. Bien qu'elle soit officiellement standardisée, le support généralisé à travers les navigateurs, les frameworks de serveur et les infrastructures comme les proxys et les WAFs en est encore à ses débuts.

Comment QUERY améliore-t-il la mise en cache par rapport à l'utilisation de POST pour la recherche ?

Les réponses POST ne sont généralement pas mises en cache par les intermédiaires comme les proxys ou les CDNs. Les réponses QUERY sont explicitement conçues pour être cachables, le contenu du corps de la requête étant utilisé comme partie de la clé de cache, améliorant considérablement les performances.

Found this useful? Share it.

AI Reputation Report

What AI knows about you.

ChatGPT, Perplexity, Gemini, Claude & Grok are already answering questions in your category. Type your site, see who they name — you, or your competitor. Free preview.

Check my sitefree preview

One short daily email of tools worth shipping. No drip funnel.

one email a day · unsubscribe in two clicks · no third-party tracking

🚀En savoir plus

Gardez une longueur d'avance en IA

Découvrez les meilleurs outils IA, agents et serveurs MCP sélectionnés par Stork.AI.

P.S. Vous avez créé quelque chose d'utile ? Listez-le sur Stork