Material de repaso para mis alumnos de Desarrollo Web.
1. ¿Qué vas a encontrarte en el examen?
El ejercicio práctico girará en torno a una pequeña API REST desarrollada con Flask que gestiona una lista de usuarios en memoria. Deberás comprender el flujo completo de CRUD (Create, Read, Update, Delete) y saber leer, modificar y depurar el código.
from flask import Flask, request, jsonify
app = Flask(__name__)
usuarios = [
{"id": 1, "nombre": "Juan", "email": "juan@example.com"},
{"id": 2, "nombre": "Maria", "email": "maria@example.com"}
]
# Rutas y lógica…
Puedes clonar el proyecto de la carpeta de clase o copiarlo desde aquí para practicar en local (python app.py
).
2. Anatomía de la API
Verbo HTTP | Ruta | Acción (CRUD) | Devuelve… |
---|---|---|---|
GET | /usuarios | Read (all) | Lista completa de usuarios (JSON) |
GET | /usuarios/<id> | Read (one) | Un usuario o 404 |
POST | /usuarios | Create | Usuario creado + 201 |
PUT | /usuarios/<id> | Update | Usuario actualizado o 404 |
DELETE | /usuarios/<id> | Delete | Mensaje de éxito |
Puntos que te pueden preguntar
jsonify
vs.json.dumps
- Diferencia entre
200 OK
,201 Created
y404 Not Found
. - Por qué
usuarios
es global y qué implicaciones tiene en concurrencia. - Uso de expresiones generadoras para buscar un usuario:
next((u for u in usuarios if u["id"] == id), None)
- Añadir validación de campos obligatorios (
nombre
,email
). - Hacer persistente la base de datos (SQLite, SQLAlchemy).
3. Preguntas tipo examen
- Añade una ruta
/usuarios/<id>
(PATCH) que permita modificar solo el campoemail
. - Explica con tus palabras qué hace la línea
nuevo_usuario["id"] = max(u["id"] for u in usuarios) + 1 if usuarios else 1
- Refactoriza el código para que devuelva
204 No Content
tras un borrado exitoso. - ¿Cómo protegerías la API con un token JWT de manera básica?
- Encuentra y corrige dos errores conceptuales en el siguiente fragmento:
if usuario is None: return usuario, 404
4. Consejos de estudio exprés
- Repasa HTTP: verbos, cabeceras y códigos de estado.
- Lanza la API en local y prueba cada ruta con cURL o Postman.
- Simula casos límite:
GET /usuarios/999
,POST /usuarios
sinemail
, etc. - Practica agregar logging para localizar errores rápidamente.
- Si algo no compila, lee siempre el traceback de abajo arriba.
5. Recursos de última hora
- Documentación oficial de Flask
- Cheat-sheet de códigos HTTP (MDN)
- RESTful API design – Spotify Engineering
6. Cierre
Dominar esta API te dará medio examen aprobado porque cubre los fundamentos de Flask, routing y JSON. Dedícale un par de tardes a picar código, rompe cosas y fíjate en las trazas: así aprenderás a arreglarlas.
📝 Extra: deja en los comentarios tus dudas o fragmentos de código que quieras que revisemos en clase. ¡Mucho ánimo y a por ello!