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
<!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"
<!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
| Feature | GET | POST |
|---|---|---|
| Back button/Reload | Harmless | Reloading the page will resubmit the form data. The browser must warn that the data will be re-submitted in this case. |
| Can be Bookmarked | Yes | No |
| Can be cached | Yes | No |
| Encoding Type | application/x-www-form-urlencoded | application/x-www-form-urlencoded or multipart/form-data |
| History | Remains in browser history. | Doesn't remain in browser history. |
| Data Length Restrictions | While 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 Restriction | Primarily ASCII characters, though UTF-8 is supported via percent-encoding. | Doesn't have restrictions. Binary data is also allowed. |
| Security | Less 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. |
| Visibility | Data 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
GETetPOST. Pour utiliserPUT,PATCHouDELETEavec 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 :
| Method | Description |
|---|---|
| HEAD | It is the same as the GET method, but returns only HTTP headers, not the document body. |
| OPTIONS | It returns HTTP methods that are supported by the server. |
| CONNECT | It 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
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: 160Après avoir stocké le corps d’entité donné dans le fichier, le serveur enverra la réponse suivante :
HTTP Methods - Put Method example2
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: ClosedMé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
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-AliveAprès la suppression du fichier, le serveur enverra la réponse suivante :
Delete Method Response
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: ClosedPractice
Lesquelles des méthodes HTTP suivantes sont valides selon le contenu de l’URL fournie ?