Promedio de nivel
Devolvé el promedio de los niveles.
Entrá y llevá tu progreso —ejercicios, medallas y Pokémon— a cualquier dispositivo. 🔄
Si tu cuenta ya tiene progreso guardado, se carga ese al entrar.
Entraste como . Tu progreso se sincroniza solo. 🔄
Devolvé el promedio de los niveles.
🎯 Meta: estar del otro lado del mostrador: ser el cliente que le pide datos a una API (como la PokéAPI) y procesa la respuesta.
Hasta ahora construiste APIs. Ahora vas a usar una. Tu programa hace un pedido a una API externa y trabaja con el JSON que recibe.
En una compu normal, para pedirle datos a una API se usa la librería requests:
# (así se ve en tu compu; necesita internet y la librería requests)
import requests
respuesta = requests.get("https://pokeapi.co/api/v2/pokemon/pikachu")
datos = respuesta.json() # convierte el JSON a diccionario
print(datos["name"]) # pikachu
⚠️ Hacer pedidos de red de verdad desde el navegador tiene límites (CORS, permisos). Por eso acá practicamos la parte clave y siempre necesaria: procesar la respuesta que te da la API. El pedido lo simulamos con el JSON ya recibido.
P: En una compu normal, ¿qué librería de Python se usa para hacer pedidos HTTP a una API externa?
- `urllib`
- `json`
+ `requests`
> `requests` es la librería estándar para consumir APIs: `requests.get(url)` hace el pedido y `.json()` convierte la respuesta. `json` solo maneja texto JSON, no hace pedidos de red.
Lo que recibís es JSON (texto). Lo convertís a Python y extraés lo que necesitás.
import json
# así viene la respuesta de la API (texto JSON)
respuesta = '{"name": "charizard", "tipos": ["fuego", "volador"], "nivel": 90}'
datos = json.loads(respuesta)
print("nombre:", datos["name"])
print("tipos:", datos["tipos"])
print("primer tipo:", datos["tipos"][0])
Muchas APIs devuelven {"results": [...]}. Recorrés esa lista.
import json
respuesta = '{"results": [{"name": "bulbasaur"}, {"name": "ivysaur"}, {"name": "venusaur"}]}'
datos = json.loads(respuesta)
print("cantidad:", len(datos["results"]))
for p in datos["results"]:
print("-", p["name"])
P: Una API devuelve `'{"results": [{"name": "bulbasaur"}, {"name": "ivysaur"}]}'`. ¿Cómo accedés al nombre del primer Pokémon?
- `datos["name"]`
- `datos[0]["name"]`
+ `datos["results"][0]["name"]`
> Primero accedés a la clave `"results"` (que es una lista), luego al índice `[0]` (primer elemento), y finalmente a `"name"`.
No siempre sale bien. Revisás el código de estado antes de confiar en los datos.
import json
def procesar(status, texto):
if status == 200:
return json.loads(texto)
return None # algo falló (404, 500, ...)
print(procesar(200, '{"ok": 1}')) # {'ok': 1}
print(procesar(404, 'Not Found')) # None
| Cosa | Para qué |
|---|---|
requests.get(url) | (en tu compu) pedir datos a una API |
respuesta.json() | convertir la respuesta a diccionario |
json.loads(texto) | procesar JSON recibido |
revisar status | manejar errores antes de usar los datos |
Practicá con los ejercicios de este tema. 💪
⚡ “Saber pedir y saber procesar: con eso, todas las APIs del mundo son tuyas.”