Vous avez peut-être entendu parler des requêtes GET et POST, mais ce n'est que le début.
Chaque requête HTTP utilise une méthode pour décrire son objectif essentiel. Chaque méthode a des utilisations spécifiques pour des tâches allant de la récupération d'une page Web à la suppression d'une ressource. GET et POST sont les deux plus connus, mais il y en a sept autres.
Découvrez ce concept et à quoi servent chacune des neuf méthodes HTTP possibles.
Qu'est-ce qu'une méthode HTTP?
Chaque requête HTTP que vous faites inclut une action et une cible pour cette action, un peu comme un verbe et un nom qui agit comme un objet.
L'URL identifie une ressource unique, agissant en tant que cible de la demande. Pendant ce temps, le verbe - quelle action effectuer sur cette URL - est représenté par une méthode.
La première ligne d'une requête HTTP fournit les informations les plus importantes, notamment la version HTTP, l'URL de la ressource et la méthode de requête :
GET /software/htp/cics/index.html HTTP/1.1
Quelles sont les 9 méthodes HTTP?
Les quatre premières méthodes sont équivalentes aux quatre actions du modèle CRUD: Créer, Lire, Mettre à jour et Supprimer. Les méthodes HTTP respectives sont POSTE, OBTENIR, METTRE, et SUPPRIMER.
OBTENIR
La requête par défaut la plus courante que vous enverrez lorsque vous naviguez sur le Web et cliquez sur des liens ou demandez des données via une API. Le serveur doit renvoyer la ressource dans son corps de réponse.
POSTE
Utilisez POST pour créer de nouvelles ressources, en particulier lorsque ces ressources ont une ressource parent identifiable. Par exemple, si vous avez une ressource /clients, vous devez créer un nouveau client en postant les données requises sur /clients.
METTRE
Mettre à jour ou remplacer une ressource existante. Ceci est similaire à POST, mais le client est responsable du choix d'un identifiant unique pour la ressource. Pour créer une ressource à l'aide de PUT, l'URL de la ressource doit inclure un identifiant, par exemple, /clients/007.
SUPPRIMER
Utilisez cette méthode pour supprimer la ressource que vous spécifiez dans l'URL. Comme toutes les méthodes HTTP, la prise en charge dépend du serveur. Cela peut permettre à n'importe qui de supprimer une ressource, même si cela serait clairement risqué. Un serveur prenant en charge DELETE nécessitera généralement Authentification et autorisation.
Deux autres méthodes offrent de légères variations par rapport à ce qui précède: CORRECTIF et DIRIGER. Vous pouvez les trouver utiles lorsque vous utilisez certaines API ou si vous créez la vôtre.
CORRECTIF
La méthode PATCH met à jour une ressource existante, avec seulement des données partielles. En d'autres termes, vous n'avez pas besoin de fournir la représentation complète de la nouvelle ressource, uniquement les champs que vous devez mettre à jour.
DIRIGER
Une requête HEAD sert à obtenir des informations sur une ressource, mais pas sur la ressource elle-même. La réponse n'inclura pas de corps, mais elle contiendra un ensemble d'en-têtes HTTP utiles. Vous pouvez connaître la taille totale d'un fichier avant de le télécharger, via l'en-tête de réponse Content-Length.
Les méthodes restantes—OPTIONS, CONNECTER, et TRACE- sont plus obscures. Ils traitent des métadonnées, de la mise en réseau et du dépannage. Vous les trouverez peut-être utiles dans certains types de programmation, mais vous ne les utiliserez probablement pas tous les jours.
OPTIONS
Un serveur doit répondre à cette méthode en vous indiquant quelles méthodes HTTP la ressource prend réellement en charge. Cela peut être utile pour la découverte.
CONNECTER
Certains types de logiciels de mise en réseau peuvent utiliser cette méthode pour établir un tunnel entre deux ordinateurs. Ceci est souvent utilisé pour initier une connexion HTTPS via un proxy.
TRACE
Cette méthode est utile pour le dépannage. A sa réception, le serveur doit renvoyer la requête qu'il a reçue dans le corps de la réponse. Le procédé fournit un mécanisme pour vérifier si des machines intermédiaires ont modifié des détails de la demande.
GET et HEAD sont les deux seules méthodes prises en charge par chaque serveur Web général. Un serveur particulier peut ou non prendre en charge d'autres méthodes, vous devez donc vérifier d'abord.
Quand pourriez-vous utiliser ces méthodes?
La plupart du temps, les méthodes HTTP seront transparentes pour vous. Cependant, vous devrez les prendre en compte si vous ajoutez un formulaire à une page Web ou utilisez une API.
Méthodes HTTP en HTML
Le former éléments méthode L'attribut vous permet de définir la méthode HTTP à utiliser lors de la soumission du formulaire. HTML ne prend en charge que le poste et obtenir valeurs pour cet attribut, plus une alternative de dialogue obscure.
<formerméthode="poste">
...
former>
Vous pouvez utiliser des fonctionnalités telles que Outils de développement de Chrome regarder Réseau trafic et confirmez la méthode que votre navigateur envoie pour une demande particulière. Notez que la plupart des formulaires Web enverront un POST car ils mettent généralement à jour les données sur le serveur. Cependant, de nombreux formulaires de recherche utilisent GET car ils récupèrent simplement les données sans les modifier.
Étant donné que les données POST ne font pas partie de l'URL, elles sont plus privées que si vous les envoyez via un GET. Les données existent toujours dans le corps de la requête où, en théorie, un attaquant peut les intercepter. Mais l'envoi de données via HTTPS devrait atténuer ce problème.
Vous ne devez jamais implémenter une connexion utilisateur avec des requêtes GET. Même si la connexion peut ressembler davantage à une opération de lecture qu'à une création ou à une mise à jour, vous devez toujours utiliser POST pour sécuriser les données.
Étant donné que les formulaires HTML ne prennent en charge que GET et POST, vous ne pouvez pas créer directement un formulaire qui, par exemple, supprime une ressource sur le serveur. Une solution de contournement courante, qui respecte les principes REST sur le serveur, consiste à utiliser une variable d'espace réservé et à prétendre qu'il s'agissait de la méthode HTTP d'origine. Par exemple:
<formerméthode="poste">
<saisirtaper="caché"nom="_méthode"valeur="SUPPRIMER" />
...
former>
Votre code côté serveur peut vérifier la présence de cette variable "méthode proxy" et la traiter comme s'il s'agissait de la véritable méthode utilisée. Par exemple, en PHP :
$méthode = $_SERVER["REQUEST_METHOD"];
si (array_key_exists("_méthode", $_REQUEST)) {
$méthode = $_REQUEST["_méthode"];
}
Envoi de requêtes HTTP par programmation
L'API Web Fetch fournit une fonction JavaScript fetch() que vous pouvez utiliser pour envoyer une requête HTTP. Il prend en charge la gamme complète de méthodes, pas seulement les méthodes GET et POST prises en charge par HTML.
La fonction de récupération enverra une requête GET par défaut. Pour utiliser une méthode différente, spécifiez son nom comme valeur pour un méthode propriété dans un objet que vous envoyez comme deuxième argument.
aller chercher(' https://example.com/', { méthode: "DIRIGER" });
Vous pouvez également envoyer des requêtes HTTP à partir de nombreux langages côté serveur, y compris PHP. Dans ce langage, la bibliothèque curl est un moyen courant d'envoyer de telles requêtes.
La bibliothèque curl a une option CURLOPT_CUSTOMREQUEST que vous pouvez définir pour spécifier une méthode
si ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'METTRE');
curl_exec($ch);
// ...
}
Via la ligne de commande
L'outil de ligne de commande curl vous permet de transférer des données vers ou depuis un serveur, via l'un des nombreux protocoles. HTTP (et HTTPS) sont deux cas d'utilisation très courants.
Par défaut, curl envoie une requête GET, comme vous pouvez le confirmer avec la commande suivante :
curl -v -s -o /dev/null example.com/get-test
Vous pouvez voir la méthode de requête sur la cinquième ligne de la sortie :
Vous pouvez modifier la méthode de requête envoyée par curl à l'aide de l'indicateur -X :
curl -v -s -o /dev/null example.com/get-test -X POST
Maintenant, curl envoie une requête en utilisant la méthode POST :
HTTP a de nombreuses utilisations
La plupart de ce que vous faites sur le Web impliquera des requêtes GET standard, avec le POST occasionnel pour les soumissions de formulaires. Mais HTTP est un protocole beaucoup plus expressif que cela ne le suggère.
Certaines des méthodes les plus courantes reflètent le modèle CRUD qui fait de HTTP une excellente base sur laquelle créer une API axée sur les ressources.