Aller au contenu

Méthodes HTTP

HTTP (Hypertext Transfer Protocol) a été créé pour assurer la communication entre les clients et le serveur. Il fonctionne selon un modèle requête-réponse.

Il existe deux méthodes HTTP de base : GET et POST.

Méthode GET

La méthode GET demande des données à une source spécifiée. Les requêtes GET peuvent être mises en cache et restent dans l’historique du navigateur. Elles peuvent aussi être ajoutées aux favoris.

Elle ne doit jamais être utilisée pour des données sensibles. Les requêtes GET ont des restrictions de longueur et doivent être utilisées uniquement pour récupérer des données.

DANGER

Les chaînes de requête (paires nom/valeur) sont envoyées dans l’URL de la requête GET.

Exemple d’un champ de saisie de type texte avec la méthode get

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <form action="/form/submit" method="get">
      First name:
      <input type="text" name="username" placeholder="Your name" />
      <br />
      <br />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

Méthode POST

La méthode POST envoie des données à traiter vers une source spécifiée. Contrairement à la méthode GET, les requêtes POST ne sont jamais mises en cache, ne restent pas dans l’historique du navigateur et ne peuvent pas être ajoutées aux favoris. De plus, les requêtes POST ne sont pas soumises aux restrictions de longueur d’URL, bien que les serveurs imposent généralement leurs propres limites de taille de corps.

DANGER

Les chaînes de requête (paires nom/valeur) sont envoyées dans le corps du message HTTP de la requête POST.

Exemple d’un formulaire avec la méthode "post"

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <form action="/form/submit" method="post">
      First name:
      <input type="text" name="username" placeholder="Your name" />
      <br /><br />
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>

Comparaison des méthodes GET et POST

FeatureGETPOST
Back button/ReloadHarmlessReloading the page will resubmit the form data. The browser must warn that the data will be re-submitted in this case.
Can be BookmarkedYesNo
Can be cachedYesNo
Encoding Typeapplication/x-www-form-urlencodedapplication/x-www-form-urlencoded or multipart/form-data
HistoryRemains in browser history.Doesn't remain in browser history.
Data Length RestrictionsWhile sending data, GET method adds the data to the URL. The URL length is limited (maximum URL length is 2048 characters).Doesn't have URL length restrictions, though servers typically enforce body size limits.
Data Type RestrictionPrimarily ASCII characters, though UTF-8 is supported via percent-encoding.Doesn't have restrictions. Binary data is also allowed.
SecurityLess secure than POST, as the data sent is part of the URL.POST is more secure than GET, as data is not visible in the URL or browser history. However, both transmit data in plaintext over HTTP and require HTTPS for actual security.
VisibilityData is visible to everyone in the URL.Doesn't show data in the URL.

Note Les formulaires HTML ne prennent nativement en charge que les méthodes GET et POST. Pour utiliser PUT, PATCH ou DELETE avec des formulaires, vous avez généralement besoin de JavaScript ou d’un routage côté serveur pour simuler ces méthodes.

Autres méthodes de requête HTTP

En plus des méthodes GET et POST, il existe d’autres méthodes. Voir ci-dessous :

MethodDescription
HEADIt is the same as the GET method, but returns only HTTP headers, not the document body.
OPTIONSIt returns HTTP methods that are supported by the server.
CONNECTIt converts the request connection to a transparent TCP/IP tunnel.

Méthode Put

La méthode PUT est principalement utilisée pour les opérations de mise à jour. Autrement dit, avec cette méthode, on place une URL de ressource cible dans le corps de la requête, qui contient la représentation de la ressource d’origine qui a été récemment mise à jour. Cette méthode peut également être utilisée pour générer une ressource lorsque l’identifiant de la ressource est choisi par le client, et non par le serveur.

Gardez à l’esprit que PUT n’est pas considéré comme une méthode sûre, car il peut créer ou modifier l’état sur le serveur, mais il est idempotent. Cela signifie que si vous créez ou modifiez la ressource avec cette méthode, puis effectuez la même requête une deuxième fois, la ressource sera toujours présente dans le même état qu’après la première.

L’exemple ci-dessous demande au serveur d’enregistrer le corps d’entité donné dans method.py à la racine du serveur :

HTTP Methods - Put Method example

http
PUT /method.py HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.w3docs.com
Accept-Language: en-us
Connection: Keep-Alive
Content-Type: text/html
Content-Length: 160

Après avoir stocké le corps d’entité donné dans le fichier, le serveur enverra la réponse suivante :

HTTP Methods - Put Method example2

http
HTTP/1.1 201 Created
Date: Tue, 13 Dec 2019 14:53:57 GMT
Server: Apache/2.2.14 (Win32)
Content-Type: text/html
Content-length: 40
Connection: Closed

Méthode Patch

La méthode PATCH est principalement utilisée pour les opérations de modification. Elle n’a pas besoin de la ressource complète. Elle doit seulement contenir les changements à apporter à la ressource. Cette méthode n’est ni idempotente ni sûre. Les collisions entre deux requêtes PATCH peuvent être très dangereuses, car certains formats de patch nécessitent une opération à partir d’un point de base partagé ; sinon, la ressource sera corrompue.

Méthode Delete

Comme vous pouvez le deviner, cette méthode est utilisée pour supprimer une ressource identifiée par une URL. Cette méthode est également idempotente. Lorsqu’une ressource est supprimée, elle est retirée. Appeler DELETE plusieurs fois produit le même résultat : la ressource reste supprimée.

L’exemple ci-dessous demande au serveur de supprimer le fichier method.py, à la racine du serveur :

Delete Method Request

http
DELETE /method.py HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.w3docs.com
Accept-Language: en-us
Connection: Keep-Alive

Après la suppression du fichier, le serveur enverra la réponse suivante :

Delete Method Response

http
HTTP/1.1 200 OK
Date: Tue, 13 Dec 2019 14:53:57 GMT
Server: Apache/2.2.14 (Win32)
Content-Type: text/html
Content-length: 20
Connection: Closed

Practice

Lesquelles des méthodes HTTP suivantes sont valides selon le contenu de l’URL fournie ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.