HTTP est la clé de la communication sur Internet. Les méthodes du protocole HTTP permettent aux clients d’envoyer des requêtes aux serveurs et aux serveurs d’envoyer des réponses. Chaque site web sur la World Wide Web utilise des requêtes HTTP, d’où l’importance de bien les comprendre.
Cet article explique le concept des requêtes HTTP, leur structure, les méthodes les plus courantes et plusieurs exemples pratiques pour mieux comprendre le fonctionnement du web.
Une requête HTTP est un message dans lequel un client — par exemple un navigateur web — demande à l’hôte situé sur un serveur une ressource spécifique. Les clients utilisent des URL dans les requêtes HTTP afin d’indiquer au serveur quelles ressources ils souhaitent obtenir.
Chaque requête HTTP se compose de trois parties :
la ligne de requête (request line)
les en-têtes (headers)
le corps du message (message body)
La request line est la première ligne d’une requête HTTP. Elle sert à initialiser une action sur le serveur. Elle précise la méthode HTTP et la version du protocole utilisées. Elle inclut également une URI ou une URL.
Exemple :
GET /index.html HTTP/1.1
Les en-têtes suivent immédiatement la ligne de requête.
Ils fournissent des informations supplémentaires du client vers le serveur, telles que :
le nom d’hôte
les détails du navigateur (User-Agent)
les préférences linguistiques
les types de contenu acceptés
Les serveurs utilisent ces informations pour identifier le navigateur et le système d’exploitation du client. Les headers HTTP sont sensibles à la casse et suivent la syntaxe Nom: Valeur.
Exemple de headers :
Host: example.com
User-Agent: Mozilla/5.0 (...)
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Le message body sert à envoyer des données au serveur. Il est optionnel — toutes les requêtes HTTP n’en possèdent pas. Les méthodes qui utilisent un body sont généralement POST et parfois PUT. Le serveur traite ces données pour répondre correctement à la requête.
Une requête HTTP relie un client à un serveur afin de réaliser différentes actions :
récupérer une ressource
envoyer des données
mettre à jour un contenu
supprimer une ressource
Voici les méthodes les plus utilisées :
La méthode GET est utilisée pour demander une ressource au serveur. Chaque fois que vous chargez une page web, votre navigateur envoie une requête GET.
Caractéristiques :
cacheable
safe (sans effet secondaire)
idempotent
GET ne modifie pas l’état du serveur ; elle permet uniquement de lire des données.
POST sert à envoyer des données au serveur — par exemple un formulaire ou un fichier.
Le body contient les données envoyées. Des requêtes POST identiques peuvent créer plusieurs ressources.
PUT ressemble à POST, mais sert à remplacer des données existantes.
Différence :
POST = créer
PUT = remplacer
PUT est idempotente, ce qui signifie qu’envoyer la même requête plusieurs fois produit toujours le même résultat.
DELETE demande au serveur de supprimer une ressource particulière.
Si la suppression est réussie, le serveur renvoie une confirmation. DELETE est également idempotente.
Lorsqu’un serveur répond à une requête HTTP, il envoie une réponse HTTP. Sa structure est similaire à celle d’une requête HTTP :
la ligne de statut
les en-têtes
le corps de la réponse
Elle inclut :
la version HTTP
le code de statut
le message de statut associé
Ils contiennent des informations telles que :
la date et l’heure
le type de contenu
les détails du serveur
les directives de cache
Il contient les données retournées :
HTML
JSON
XML
images
fichiers
Les codes HTTP indiquent le résultat d’une requête. Ils comportent trois chiffres, dont le premier désigne la catégorie :
|
Groupe |
Description |
|
1xx |
Information — traitement en cours |
|
2xx |
Succès — requête traitée correctement |
|
3xx |
Redirection — action supplémentaire requise |
|
4xx |
Erreur côté client |
|
5xx |
Erreur côté serveur |
Les en-têtes fournissent des informations cruciales pour la communication client–serveur.
Indique le domaine servi par le serveur.
Cache-Control et Expires définissent la durée de conservation d’une réponse.
Set-Cookie et Cookie gèrent les sessions utilisateur.
Exemples :
Authorization — authentification
Content-Security-Policy — protection contre les attaques XSS
Les headers indiquent si la requête a réussi ou échoué.
Ces exemples utilisent Python et la bibliothèque requests.
import requests
response = requests.get("https://api.example.com/data",
params={"param1": "value1", "param2": "value2"})
print(response.status_code)
print(response.json())
import requests
url = "https://api.example.com/users"
data = {
"username": "newuser",
"email": "newuser@example.com",
"password": "securepassword"
}
response = requests.post(url, json=data)
if response.status_code == 201:
print("User created successfully:", response.json())
else:
print("Error:", response.status_code, response.text)
import requests
url = "https://api.example.com/users/123"
data = {
"username": "updateduser",
"email": "updateduser@example.com"
}
response = requests.put(url, json=data)
if response.status_code == 200:
print("User updated successfully:", response.json())
else:
print("Error:", response.status_code, response.text)
import requests
url = "https://api.example.com/users/123"
response = requests.delete(url)
if response.status_code == 204:
print("User deleted successfully.")
else:
print("Error:", response.status_code, response.text)
Les requêtes HTTP jouent un rôle essentiel dans les interactions web. Il est donc crucial de comprendre les différentes méthodes et leur fonctionnement. Choisir la bonne méthode garantit une communication fluide entre client et serveur et améliore l’efficacité des applications web.