Capítulo 1.2: Métodos HTTP y códigos de estado
Tiempo de estudio: 40 minutos
1. HTTP: El lenguaje de comunicación en el espacio
Imagina que eres el Centro de Control de Misiones (CCM), y el servidor API es una nave espacial. HTTP (HyperText Transfer Protocol) es la radiocomunicación entre vosotros.
Cada mensaje contiene:
-
Método → Qué hacer (por ejemplo, "enviar sonda")
-
Código de estado → Resultado de la operación ("¡sonda lanzada con éxito!")
💡 Analogía espacial:
GET /stars
= "CCM → Nave: ¡Informa las coordenadas de las estrellas!"200 OK
= "Nave → CCM: ¡Coordenadas transmitidas!"
2. Métodos HTTP principales
Cada método es como un tipo de comando para una misión espacial:
Método | Análogo en el espacio | Ejemplo de solicitud | Descripción |
---|---|---|---|
GET | Solicitud de datos (telescopio) | GET /planets |
Obtener lista de planetas |
POST | Envío de nuevo objeto (lanzamiento de cohete) | POST /satellites |
Crear nuevo satélite |
PUT | Actualización completa de objeto (corrección de órbita) | PUT /satellites/iss |
Actualizar datos de la ISS |
DELETE | Destrucción de objeto (salida de órbita) | DELETE /debris/123 |
Eliminar basura espacial |
⚡ Ejemplo de código (Python):
import requests
# GET: Obtener datos sobre el cohete Falcon 9
# Usamos un endpoint real de la API de SpaceX
response = requests.get("https://api.spacexdata.com/v4/rockets/5e9d0d95eda69973a809d1ec")
print(response.status_code, response.json()['name']) # 200 Falcon 9
# POST: Crear una nueva publicación en una API de prueba
# Usamos el servicio sandbox jsonplaceholder
new_post = {"title": "Misión Artemis", "body": "Listo para el lanzamiento", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=new_post)
print(response.status_code, response.json()['id']) # 201 101 (o otro ID)
3. Códigos de estado importantes
La respuesta del servidor es como una señal de la nave espacial:
Grupo | Código | Análogo en el espacio | Descripción |
---|---|---|---|
2xx |
200 | ✅ "¡Tarea completada!" | Éxito |
201 | 🚀 "¡Cohete lanzado!" | Objeto creado | |
3xx |
301 | 🌍 "CCM reubicado a nueva dirección" | Redirección |
4xx |
400 | ❌ "¡Coordenadas incorrectas en la solicitud!" | Error del cliente |
404 | 🪐 "¡Planeta no encontrado!" | Recurso no encontrado | |
5xx |
500 | 🔥 "¡Fallo en el sistema de propulsión!" | Error del servidor |
4. Práctica: Manejo de códigos de estado
¡Siempre verifica la respuesta de la API! Ejemplo de manejo de errores:
import requests
def get_post_data(post_id):
"""Función para obtener datos de una publicación con manejo de códigos de estado."""
try:
response = requests.get(f"https://jsonplaceholder.typicode.com/posts/{post_id}")
# Verificamos el código de estado de la respuesta
if response.status_code == 200:
print(f"✅ ¡Datos para la publicación {post_id} obtenidos con éxito!")
return response.json()
elif response.status_code == 404:
print(f"⚠️ ¡Recurso para la publicación {post_id} no encontrado!")
return None
else:
# Manejo de otros errores de cliente (4xx) o de servidor (5xx)
print(f"🚨 ¡Ocurrió un error! Código de estado: {response.status_code}")
return None
except requests.exceptions.RequestException as e:
# Manejo de errores de conexión (por ejemplo, sin internet)
print(f"🔥 Error de conexión: {e}")
return None
# --- Probando nuestra función ---
print("--- Buscando publicación existente ---")
get_post_data(1)
print("\n--- Buscando publicación inexistente ---")
get_post_data(9999) # Esta publicación no existe, esperamos 404
🔭 Ejemplo de una API real (SpaceX): Solicitud:
GET https://api.spacexdata.com/v4/ships/OCISLY
Respuesta:200 OK
+ datos de la nave Solicitud:GET https://api.spacexdata.com/v4/ships/UNICORN
Respuesta:404 Not Found
Cuestionario de consolidación
🚀 Resumen del capítulo: Los métodos HTTP son vuestros comandos para misiones espaciales, y los códigos de estado son los informes de su ejecución. Recordad:
GET
= "Dame datos",POST
= "Crea nuevo",PUT
= "Actualiza todo",DELETE
= "Destruye"2xx
= Éxito,4xx
= Tu error,5xx
= Problema del servidor
¡Preparados para el lanzamiento! En el próximo capítulo descifraremos los "telegramas" del servidor: el formato JSON.
📌 Práctica: ¡Usad la API de SpaceX para enviar
GET /launches/latest
y estudiar los códigos de respuesta!