Comprendre les requêtes HTTP : structure, méthodes et exemples
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.
Qu’est-ce qu’une requête HTTP? Copier le lien
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.
Composants d’une requête HTTP Copier le lien
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)
Request Line Copier le lien
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
Headers Copier le lien
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
Message Body Copier le lien
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.
Méthodes HTTP courantes Copier le lien
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 :
GET — Récupérer des ressources Copier le lien
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 — Envoyer des données Copier le lien
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 — Mettre à jour des ressources Copier le lien
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 — Supprimer des ressources Copier le lien
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.
Qu’est-ce qu’une réponse HTTP? Copier le lien
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
Status Line Copier le lien
Elle inclut :
-
la version HTTP
-
le code de statut
-
le message de statut associé
Headers Copier le lien
Ils contiennent des informations telles que :
-
la date et l’heure
-
le type de contenu
-
les détails du serveur
-
les directives de cache
Body Copier le lien
Il contient les données retournées :
-
HTML
-
JSON
-
XML
-
images
-
fichiers
Codes de statut HTTP Copier le lien
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 |
En-têtes HTTP et leur importance Copier le lien
Les en-têtes fournissent des informations cruciales pour la communication client–serveur.
Identification de l’hôte Copier le lien
Indique le domaine servi par le serveur.
Mise en cache Copier le lien
Cache-Control et Expires définissent la durée de conservation d’une réponse.
Gestion des cookies Copier le lien
Set-Cookie et Cookie gèrent les sessions utilisateur.
Sécurité Copier le lien
Exemples :
-
Authorization — authentification
-
Content-Security-Policy — protection contre les attaques XSS
Contrôle de la réponse Copier le lien
Les headers indiquent si la requête a réussi ou échoué.
Exemples pratiques de requêtes HTTP Copier le lien
Ces exemples utilisent Python et la bibliothèque requests.
GET Copier le lien
import requests
response = requests.get("https://api.example.com/data",
params={"param1": "value1", "param2": "value2"})
print(response.status_code)
print(response.json())
POST Copier le lien
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)
PUT Copier le lien
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)
DELETE Copier le lien
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)
Conclusion Copier le lien
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.