PythonPython Avanzado y AplicacionesLección 17 de 24
Requests y Consumo de APIs
La librería requests (pip install requests) es la forma más popular de hacer peticiones HTTP en Python. requests.get(url) hace una petición GET y devuelve un objeto Response con status_code, headers, y content. response.json() convierte automáticamente el JSON de la respuesta en un diccionario Python.
Para APIs que requieren autenticación, requests soporta headers personalizados, parámetros de query, body JSON y autenticación básica. Para aplicaciones que necesitan muchas peticiones concurrentes, aiohttp es la alternativa asíncrona. Requests es perfecta para scripting, ciencia de datos y automatización.
# pip install requests
import requests
import json
# GET básico
respuesta = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(respuesta.status_code) # 200
post = respuesta.json() # Convierte JSON a dict
print(post["title"])
# GET con parámetros
params = {"userId": 1, "_limit": 5}
respuesta = requests.get(
"https://jsonplaceholder.typicode.com/posts",
params=params
)
posts = respuesta.json() # Lista de posts
print(f"Obtenidos: {len(posts)} posts")
# POST - enviar datos
nuevo_post = {
"title": "Mi Post",
"body": "Contenido del post",
"userId": 1
}
respuesta = requests.post(
"https://jsonplaceholder.typicode.com/posts",
json=nuevo_post # Serializa automáticamente a JSON
)
print(respuesta.status_code) # 201
print(respuesta.json()["id"]) # ID asignado
# Manejo de errores en requests
try:
resp = requests.get("https://api.ejemplo.com/datos", timeout=5)
resp.raise_for_status() # Lanza excepción si status >= 400
datos = resp.json()
except requests.exceptions.Timeout:
print("Tiempo de espera agotado")
except requests.exceptions.HTTPError as e:
print(f"Error HTTP: {e.response.status_code}")
except requests.exceptions.ConnectionError:
print("No hay conexión a internet")
# Headers personalizados (autenticación)
headers = {"Authorization": "Bearer mi_token_api"}
resp = requests.get("https://api.privada.com/datos", headers=headers)
Consejo⏱️ Siempre usa timeout= en requests.get(). Sin timeout, tu programa puede quedarse colgado infinitamente si el servidor no responde.
Practica esta lección
Resuelve los ejercicios del curso de Python en la app, gratis y con corrección automática.
Empezar a practicar