Domina tu examen de APIs Flask: hoja de ruta express para clavar el CRUD (y algo más)
📰 Resumen SEO (meta-description)
Prepárate para el examen de Desarrollo Web con esta guía paso a paso sobre cómo crear, probar y documentar una API REST en Flask. Incluye ejemplos de código, preguntas tipo test, prácticas recomendadas y errores frecuentes.
1. ¿Qué entra exactamente?
Dispondrás de un mini-proyecto con Flask que simula una base de datos en memoria 👇
from flask import Flask, request, jsonify
app = Flask(__name__)
usuarios = [
{"id": 1, "nombre": "Juan", "email": "juan@example.com"},
{"id": 2, "nombre": "María", "email": "maria@example.com"}
]
# Rutas GET, POST, PUT, DELETE…
Objetivo del examen:
Añadir funcionalidades, refactorizar código y justificar cada decisión.
2. Checklist de competencias que evaluarán
| Área | Dominio mínimo | Pregunta típica |
|---|---|---|
| HTTP | Verbos + códigos 2XX/4XX | «¿Por qué usas 201 en vez de 200?» |
| Python | Generadores, list comprehension | «Explica next((u for u in usuarios…), None)» |
| Flask | Decoradores, Blueprints, jsonify | «¿Qué hace @app.route?» |
| Testing | pytest y cliente de pruebas | «Escribe un test que verifique DELETE» |
| Seguridad | JWT, CSRF, headers | «Añade auth básica al endpoint /usuarios» |
Tener claro este cuadro equivale al 60 % de la nota.
3. Roadmap express en 5 pasos
- Clona y ejecuta
git clone <repositorio> cd proyecto && python app.py - Diseña una capa de servicio
Creaservices/user_service.pyy mueve ahí la lógica de usuarios. - Añade tests antes de tocar nada
def test_get_usuarios(client): res = client.get("/usuarios") assert res.status_code == 200 - Implementa PATCH + validación
Sólo permitir cambios parciales y comprobar queemailsea único. - Documenta con OpenAPI (Flask-RESTX)
Bonus de +0,5 si tu doc se abre en/docs.
4. Errores frecuentes (¡no caigas!)
- Compartir estados globales sin control
Usago una factory con app context si el ejercicio lo complica. - Olvidar cabecera
Content-Type: application/jsonen las respuestas de error. - Devolver objetos Python crudos (dict) sin
jsonify. - Asumir que el ID existe: siempre comprueba y devuelve 404.
- No aislar dependencias en los tests: aprovecha fixtures de
pytest.
5. Preguntas de examen simuladas
a. Refactoriza
delete_usuariopara retornar 204 No Content.
b. Implementa una función que pagine/usuarios?limit=…&offset=….
c. ¿Cómo resolverías las condiciones de carrera si varios alumnos llaman a la API a la vez?
Practica cada una y comenta tus soluciones en clase: ¡vas a aprender más corrigiendo al compañero que estudiando solo!
6. Recursos ultra-rápidos
- 📖 Flask Docs – Apartado “Application Structure”.
- 🧪 pytest Cheat-Sheet – https://docs.pytest.org/en/latest/cheatsheet/
- 🔒 flask-jwt-extended – Tutorial oficial en 10 min.
7. Último consejo (de profe a alumno)
“El código que no se prueba es un bug potencial.”
Dedica la última media hora del examen a lanzar los tests, revisar logs y borrar todo print innecesario. Esa pulida final suele ser la diferencia entre un 7 y un 9,5.
¡Mucho ánimo y a por la matrícula! 🎓🚀