Chapitre 1.2 : Méthodes HTTP et codes de statut
Temps d'étude : 40 minutes
1. HTTP : Le langage de communication dans l'espace
Imaginez que vous êtes le Centre de Contrôle de Mission (CCM), et le serveur API est le vaisseau spatial. HTTP (HyperText Transfer Protocol) est la communication radio entre vous.
Chaque message contient :
-
Méthode → Ce qu'il faut faire (par exemple, "envoyer une sonde")
-
Code de statut → Résultat de l'opération ("sonde lancée avec succès !")
💡 Analogie spatiale :
GET /stars
= "CCM → Vaisseau : Donne les coordonnées des étoiles !"200 OK
= "Vaisseau → CCM : Coordonnées transmises !"
2. Méthodes HTTP principales
Chaque méthode est comme un type de commande pour une mission spatiale :
Méthode | Analogie spatiale | Exemple de requête | Description |
---|---|---|---|
GET | Demande de données (télescope) | GET /planets |
Obtenir la liste des planètes |
POST | Envoi d'un nouvel objet (lancement de fusée) | POST /satellites |
Créer un nouveau satellite |
PUT | Mise à jour complète d'un objet (correction d'orbite) | PUT /satellites/iss |
Mettre à jour les données de l'ISS |
DELETE | Destruction d'un objet (désorbitation) | DELETE /debris/123 |
Supprimer les débris spatiaux |
⚡ Exemple de code (Python) :
import requests
# GET : Obtenir les données de la fusée Falcon 9
# Nous utilisons un endpoint réel de l'API SpaceX
response = requests.get("https://api.spacexdata.com/v4/rockets/5e9d0d95eda69973a809d1ec")
print(response.status_code, response.json()['name']) # 200 Falcon 9
# POST : Créer un nouveau post dans une API de test
# Nous utilisons le service bac à sable jsonplaceholder
new_post = {"title": "Artemis Mission", "body": "Ready for launch", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=new_post)
print(response.status_code, response.json()['id']) # 201 101 (ou autre ID)
3. Codes de statut importants
La réponse du serveur est comme un signal d'un vaisseau spatial :
Groupe | Code | Analogie spatiale | Description |
---|---|---|---|
2xx |
200 | ✅ "Mission accomplie !" | Succès |
201 | 🚀 "Fusée lancée !" | Objet créé | |
3xx |
301 | 🌍 "Le CCM a été déplacé vers une nouvelle adresse" | Redirection |
4xx |
400 | ❌ "Coordonnées incorrectes dans la requête !" | Erreur client |
404 | 🪐 "Planète introuvable !" | Ressource introuvable | |
5xx |
500 | 🔥 "Panne du système de propulsion !" | Erreur serveur |
4. Pratique : Gestion des codes de statut
Vérifiez toujours la réponse de l'API ! Exemple de gestion des erreurs :
import requests
def get_post_data(post_id):
"""Fonction pour obtenir les données d'un post avec gestion des codes de statut."""
try:
response = requests.get(f"https://jsonplaceholder.typicode.com/posts/{post_id}")
# Vérifie le code de statut de la réponse
if response.status_code == 200:
print(f"✅ Données pour le post {post_id} obtenues avec succès !")
return response.json()
elif response.status_code == 404:
print(f"⚠️ Ressource pour le post {post_id} introuvable !")
return None
else:
# Gère les autres erreurs client (4xx) ou serveur (5xx)
print(f"🚨 Une erreur est survenue ! Code de statut : {response.status_code}")
return None
except requests.exceptions.RequestException as e:
# Gère les erreurs de connexion (par exemple, pas d'internet)
print(f"🔥 Erreur de connexion : {e}")
return None
# --- Testons notre fonction ---
print("--- Recherche d'un post existant ---")
get_post_data(1)
print("\n--- Recherche d'un post inexistant ---")
get_post_data(9999) # Ce post n'existe pas, nous attendons 404
🔭 Exemple d'une API réelle (SpaceX) : Requête :
GET https://api.spacexdata.com/v4/ships/OCISLY
Réponse :200 OK
+ données sur le vaisseau Requête :GET https://api.spacexdata.com/v4/ships/UNICORN
Réponse :404 Not Found
Quiz de consolidation
🚀 Résumé du chapitre : Les méthodes HTTP sont vos commandes pour les missions spatiales, et les codes de statut sont les rapports sur leur exécution. Rappelez-vous :
GET
= "Donne les données",POST
= "Crée un nouveau",PUT
= "Mets tout à jour",DELETE
= "Supprime"2xx
= Succès,4xx
= Ton erreur,5xx
= Problème côté serveur
Préparez-vous au lancement ! Dans le prochain chapitre, nous déchiffrerons les "télégrammes" du serveur : le format JSON.
📌 Pratique : Utilisez l'API SpaceX pour envoyer un
GET /launches/latest
et étudier les codes de réponse !