En ce qui concerne HTTP (Hypertext Transfer Protocol), vous vous demandez peut-être pourquoi la méthode GET n'utilise généralement pas de corps de requête. Après tout, dans le monde des requêtes web, il est courant d'envoyer des données dans le corps de la requête pour transmettre des informations au serveur. Cependant, la méthode GET, bien qu'étant l'une des méthodes HTTP les plus fondamentales, fonctionne un peu différemment.
Dans ce guide, nous allons expliquer pourquoi les requêtes HTTP GET n'incluent généralement pas de corps de requête, explorer l'objectif de la méthode GET et discuter de la manière d'envoyer une requête GET.
Qu'est-ce qu'un corps de requête en HTTP ?
En HTTP, le corps de la requête fait partie du message de requête transportant des données du client vers le serveur. Il est crucial pour les méthodes telles que POST, PUT et PATCH, utilisées pour créer, mettre à jour ou modifier des ressources. Par exemple, dans une requête POST pour créer un compte utilisateur, les détails de l'utilisateur se trouvent dans le corps de la requête. En revanche, les méthodes telles que GET ou DELETE n'utilisent généralement pas de corps de requête, se concentrant sur les URL et les en-têtes pour la récupération ou la suppression de ressources.
Une requête GET a-t-elle un corps en HTTP ?
Oui, techniquement, il est possible d'inclure un corps de requête dans une requête HTTP GET. Selon la spécification HTTP/1.1, tout message de requête HTTP est autorisé à contenir un corps de message, et les serveurs doivent analyser les messages en gardant cela à l'esprit. Cependant, il est essentiel de comprendre que la sémantique du serveur pour la méthode GET est limitée de telle manière qu'un corps, s'il est inclus, n'a aucune signification sémantique pour la requête.
En termes plus simples, bien qu'il ne soit pas explicitement interdit d'inclure un corps de requête dans une requête GET, il n'est jamais utile de le faire. Le but de la méthode GET est de récupérer les informations identifiées par le Request-URI, et modifier la requête en ajoutant un corps peut entraîner des complications et n'est pas conforme aux conventions HTTP standard.
Spécification HTTP/1.1
La spécification HTTP/1.1 (RFC 7230) permet l'inclusion d'un corps de requête dans les requêtes GET, bien que cela ne soit généralement pas recommandé. Bien que techniquement possible, attacher un corps à une requête GET va à l'encontre du principe d'utilisation de GET pour récupérer en toute sécurité des données sans modifier les ressources du serveur.
Pourquoi la requête HTTP GET n'utilise pas de corps ?
Pourquoi la méthode GET n'utilise-t-elle pas le corps HTTP ? Ensuite, nous allons présenter les principales raisons pour lesquelles la méthode GET n'utilise pas le corps de la requête.
Limitations de la spécification HTTP
- La spécification HTTP stipule que les requêtes de méthode GET doivent être sûres à renvoyer.
- Avoir un corps demandé peut provoquer des effets secondaires involontaires lors de la retransmission
Idempotence garantie
- La méthode GET doit garantir l'idempotence que "le résultat ne changera pas même si la même requête GET est répétée"
- Le corps de la requête peut briser l'idempotence
Mise en œuvre du cache
- Les résultats GET sont souvent mis en cache et réutilisés
- La mise en cache ne fonctionne pas s'il y a un corps de requête
Facilité de mise en favoris et de partage
- Il est souhaitable de pouvoir reproduire les résultats en utilisant uniquement l'URL de la requête GET.
- S'il y a un corps de requête, il sera difficile de reproduire en utilisant uniquement l'URL.
Sécurité
- Les requêtes GET peuvent être enregistrées dans les journaux, etc.
- Si des informations personnelles sont incluses dans le corps de la requête, cela devient un risque pour la sécurité.
Pour les raisons ci-dessus, la méthode GET n'utilise fondamentalement pas le corps de la requête.
Exception : lors de l'utilisation du corps HTTP même dans la méthode GET
Cependant, cela ne signifie pas que vous ne pouvez pas toujours utiliser le corps HTTP avec la méthode GET. Dans les cas suivants, le corps de la requête peut également être envoyé en utilisant la méthode GET.
Bien que la méthode HTTP GET ne soit traditionnellement pas associée à l'utilisation de corps de requête, il existe des exceptions. Par exemple, lors de la spécification de critères de recherche, tels que des mots-clés de recherche, vous pouvez les intégrer dans le corps de la requête et utiliser la méthode GET pour la transmission.
Dans les cas où le nombre de paramètres de requête est limité, comme dans les API REST, le corps de la requête peut servir d'alternative pour l'envoi de données. De plus, la contrebande de requêtes peut impliquer l'envoi de faux corps de requête pour perturber l'analyse du trafic. En pratique, bien que la méthode GET exclue généralement les corps de requête, il existe des cas spécifiques où cette règle peut être déviée. Dans la plupart des scénarios impliquant la transmission de données via le corps HTTP, des méthodes telles que POST et PUT sont couramment employées.
Apidog : Entièrement compatible avec toutes les requêtes HTTP (GET, POST, PUT, DELETE)
Alors, que dois-je faire si je veux envoyer des données dans un corps HTTP en utilisant des méthodes telles que GET ou POST ? Un excellent outil de gestion d'API appelé Apidog prend entièrement en charge toutes les méthodes HTTP, vous pouvez donc spécifier l'une des méthodes HTTP lors de l'envoi d'une requête HTTP, et choisir d'utiliser ou non le corps HTTP. peut.
De plus, si vous développez vous-même une API, vous pouvez non seulement concevoir l'API, mais également effectuer diverses fonctions telles que la génération de spécifications d'API, l'automatisation des tests, la simulation de données, etc.

Apidog prend également en charge diverses méthodes HTTP, notamment GET et POST. Les deux API Web utilisent le protocole HTTP, vous devez donc choisir la méthode HTTP en fonction de votre objectif. En parlant de méthodes HTTP, il y a toujours les suivantes :
- GET (obtenir le contenu)
- POST (ajouter du nouveau contenu)
- PUT (modifier le contenu existant)
- DELETE (supprimer le contenu)

Vous pouvez sélectionner la méthode souhaitée dans la liste déroulante des méthodes HTTP, ou si vous souhaitez utiliser le corps HTTP, vous pouvez facilement basculer vers l'onglet "Body" du paramètre de requête.

Cliquez sur le bouton "Envoyer", vous recevrez rapidement la réponse GET.
