Quelques notions sur HTTP
Le protocole HTTP est un protocole qui permet à un navigateur web de communiquer avec un serveur.
Il existe plusieurs méthodes / verbes HTTP :
GET
: utilisé pour récupérer des données depuis le serveur (afficher une page, des ressources)POST
: utilisé pour envoyer des données vers le serveur (formulaire par exemple)PUT
: utilisé pour mettre à jour une donnée existanteDELETE
: utilisé pour supprimer une donnée
Les méthodes PUT
et DELETE
ne sont pas utilisées dans le cadre d'une page
web avec formulaire (<form>
). Elles peuvent être par contre utilisées dans le
cadre d'appels XHR via Javascript (Angular, React ...)
Une URL appelée depuis votre navigateur a la forme suivante :
GET https://monsite.com/path1/path2/page.extension?cle1=valeur1&cle2=valeur2
D'un point de vue du protocole :
GET /path1/path2/page.extension?cle1=valeur1&cle2=valeur2 HTTP/1.1
Host: monsite.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: fr-FR,en-US;q=0.5
Accept-Encoding: gzip, deflate, br
Cookie: auth=9973072f4d2903c24642a6bcaf7030be29d621f2;
- Méthode HTTP :
GET
- Chemin/Path/URL :
/path1/path2/page.extension
- Paramètres HTTP (
@RequestParam
dans Spring) :?cle1=valeur1&cle2=valeur2
- Headers ou entête :
Host: monsite.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0
Une réponse HTTP a la forme suivante :
HTTP/1.1 200 OK
Date: Sat, 28 Mar 2020 11:22:39 GMT
Server: Apache/2.4.7 (Ubuntu)
Vary: Accept-Encoding
Content-Encoding: gzip
Strict-Transport-Security: max-age=1607000; includeSubDomains
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf8
<!DOCTYPE html>
<html>
<head>
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Le code retour est indiqué sur la première ligne de la réponse. Les codes retours sont nombreux mais sont catégorisés :
- 2xx : réponse correcte du serveur (200 OK, 201 Created, ...)
- 3xx : redirection vers une autre page (avec le header
Location
pour la nouvelle adresse) - 4xx : mauvaise requête du client (404 Not Found, 403 Forbidden)
- 5xx : erreur serveur (erreur côté back end)