Inicio > Cursos > Python > Requests y Consumo de APIs
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.
← Módulos y Paquetes PopularesExpresiones Regulares →

Practica esta lección

Resuelve los ejercicios del curso de Python en la app, gratis y con corrección automática.

Empezar a practicar