Agregar (POST + 201)
En POST /pokedex agregá el JSON recibido a la Pokédex y devolvelo con estado 201.
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. 🔄
En POST /pokedex agregá el JSON recibido a la Pokédex y devolvelo con estado 201.
🎯 Meta: juntar todo Hoenn en una API REST completa de Pokémon: listar, buscar, obtener por id y crear. Tu primer backend de verdad.
Llegaste al final de Hoenn. 🌧️ Ahora armás una Pokédex API que junta todo: rutas, JSON, parámetros de path y query, POST y manejo de errores.
from flask import Flask, jsonify, request
app = Flask(__name__)
POKEDEX = [
{"id": 1, "nombre": "Bulbasaur", "tipo": "Planta"},
{"id": 2, "nombre": "Charmander", "tipo": "Fuego"},
{"id": 3, "nombre": "Squirtle", "tipo": "Agua"},
{"id": 4, "nombre": "Vulpix", "tipo": "Fuego"},
]
@app.route("/pokedex")
def listar():
return jsonify(POKEDEX)
@app.route("/pokedex/<int:pid>")
def obtener(pid):
for p in POKEDEX:
if p["id"] == pid:
return jsonify(p)
return jsonify({"error": "no existe"}), 404
@app.route("/buscar")
def buscar():
tipo = request.args.get("tipo")
return jsonify([p for p in POKEDEX if p["tipo"] == tipo])
@app.route("/pokedex", methods=["POST"])
def agregar():
nuevo = request.json
POKEDEX.append(nuevo)
return jsonify(nuevo), 201
P: En la Pokédex API, ¿qué ruta y método usarías para **filtrar** Pokémon por tipo (`Fuego`)?
- GET `/pokedex/Fuego`
- POST `/buscar` con `{"tipo": "Fuego"}`
+ GET `/buscar?tipo=Fuego`
> La query string (`?tipo=Fuego`) es para filtros. El path (`/pokedex/<id>`) identifica un recurso concreto por id. Filtrar con GET y query string es la convención REST.
from flask import Flask, jsonify, request
app = Flask(__name__)
POKEDEX = [
{"id": 1, "nombre": "Bulbasaur", "tipo": "Planta"},
{"id": 2, "nombre": "Charmander", "tipo": "Fuego"},
{"id": 4, "nombre": "Vulpix", "tipo": "Fuego"},
]
@app.route("/pokedex")
def listar():
return jsonify(POKEDEX)
@app.route("/buscar")
def buscar():
tipo = request.args.get("tipo")
return jsonify([p for p in POKEDEX if p["tipo"] == tipo])
c = app.test_client()
print("todos:", [p["nombre"] for p in c.get("/pokedex").get_json()])
print("fuego:", [p["nombre"] for p in c.get("/buscar?tipo=Fuego").get_json()])
P: ¿Cuántos conceptos de Hoenn juntó este proyecto integrador?
- 3 (Flask, JSON, parámetros)
- 5 (HTTP, Flask, JSON, parámetros, POST)
+ 7 (HTTP+JSON, Flask, jsonify, parámetros, POST, CRUD+errores, consumir)
> El proyecto integra los 7 temas de Hoenn: HTTP/JSON, primera app Flask, respuestas JSON, parámetros de path y query, POST, CRUD con errores REST, y consumo de APIs.
jsonify./pokedex/<id>) y query (?tipo=).201.404.Con esto ya entendés cómo funciona el backend de casi cualquier app moderna. 🚀
Cerrá Hoenn con los ejercicios de este tema. Al completarlos ganás la medalla Lluvia y sos Campeón de Hoenn. 🌧️🏆
⚡ “Construiste una API. Ahora el mundo puede pedirle datos a tu código.”