"""
01-consulta-api.py — Consultar una API REST con httpx (con paginación).

Qué es:      Script base para traer datos de cualquier API REST pública,
             con manejo de errores y paginación por página.
Cuándo usarlo: Como punto de partida cada vez que necesites datos de una
             API (métricas, catálogos, tickets) sin depender de Postman.
Requisitos:  Python 3.10+ y dependencias:  pip install -r requirements.txt
Cómo usarlo: python 01-consulta-api.py
             Cambia URL y PARAMETROS por los de tu API.
"""

import httpx

# --- CONFIGURACIÓN: cambia esto por tu API ---
URL = "https://jsonplaceholder.typicode.com/posts"
POR_PAGINA = 20       # registros por página (_limit en esta API; en otras: per_page, page_size)
MAX_PAGINAS = 5       # tope de seguridad para no descargar infinito
# ---------------------------------------------

todos_los_datos = []

try:
    for pagina in range(1, MAX_PAGINAS + 1):
        parametros = {"_page": pagina, "_limit": POR_PAGINA}
        respuesta = httpx.get(URL, params=parametros, timeout=30.0)
        respuesta.raise_for_status()
        datos = respuesta.json()

        if not datos:  # página vacía → no hay más resultados
            break

        todos_los_datos.extend(datos)
        print(f"Página {pagina}: {len(datos)} registros")

    print(f"\nTotal obtenido: {len(todos_los_datos)} registros")
    for post in todos_los_datos[:3]:
        print(f"ID: {post['id']} — Título: {post['title']}")

except httpx.RequestError as e:
    print(f"Error de conexión: {e}")
except httpx.HTTPStatusError as e:
    print(f"Error HTTP: {e.response.status_code}")
