Boost Academy
FormaciónEvaluacionesPerfil
Volver
  • En directo

Flask — Intermedio

8h de clase en directo·HACK A BOSS·Español

Skills que aprenderás

  • Flask

Convocatorias

Necesitas un plan activo

Para acceder a los cursos en directo necesitas un plan activo. Estamos trabajando para que los planes estén disponibles pronto — ¡mantente atento!

No hay convocatorias abiertas ahora mismo, pero no te pierdas la oportunidad: guarda este curso y te avisamos en cuanto se abra una convocatoria.

Descripción

Objetivos

Temario

Requisitos técnicos

Conocimientos previos

Detalles de la convocatoria

Recursos

No hay recursos disponibles todavía para esta convocatoria

Este curso está dirigido a desarrolladores con experiencia previa en Flask que buscan consolidar prácticas profesionales para construir APIs REST de mayor escala y calidad. A lo largo de las 8 horas, el participante aprenderá a estructurar aplicaciones mediante Blueprints y el patrón Application Factory, a integrar SQLAlchemy con migraciones controladas y a proteger endpoints con autenticación JWT. También abordará la gestión de configuración por entornos, el diseño de un sistema centralizado de manejo de errores, la serialización y validación de datos con librerías especializadas, y la escritura de pruebas automatizadas con pytest. Al finalizar, el participante será capaz de entregar una API REST modular, segura, testeable y lista para desplegarse en distintos entornos.

  1. Explicar las ventajas del patrón Application Factory y la separación por dominio funcional mediante Blueprints para mantener bases de código escalables.
  2. Describir el papel de SQLAlchemy como ORM y el flujo de trabajo de migraciones de esquema con Flask-Migrate en un ciclo de desarrollo iterativo.
  3. Distinguir los entornos de desarrollo, test y producción, e identificar las variables de configuración relevantes que deben externalizarse en cada uno.
  4. Integrar Flask-JWT-Extended en una aplicación existente para diferenciar rutas públicas de rutas protegidas mediante tokens de acceso.
  5. Diseñar un manejador centralizado de errores HTTP que devuelva respuestas JSON consistentes para los códigos más frecuentes de la API.
  6. Comparar la serialización manual con el uso de Marshmallow o Pydantic, eligiendo la estrategia más adecuada según criterios de validación y mantenibilidad.
  7. Depurar fallos en el ciclo de vida de una petición —incluyendo errores de contexto, relaciones ORM mal cargadas y tokens inválidos— utilizando logs y el debugger de Flask.
  8. Construir una suite de pruebas con pytest y fixtures de aplicación Flask que cubra los flujos críticos de creación, lectura y autenticación de la API.

Arquitectura modular con Blueprints y Application Factory. Se presenta el patrón Application Factory como estrategia para instanciar la aplicación de forma desacoplada y reproducible. A partir de ahí se estudia la organización del proyecto en Blueprints separados por dominio funcional, analizando cómo esta estructura facilita la incorporación de nuevas funcionalidades sin romper las existentes.

Persistencia relacional y control de esquema. Este bloque cubre la integración de SQLAlchemy como ORM dentro del factory, la definición de modelos relacionales y las buenas prácticas de sesión. Se incorpora Flask-Migrate para gestionar el historial de migraciones, asegurando que los cambios de esquema sean aplicables de forma controlada en todos los entornos.

Gestión de configuración por entornos. Se analiza cómo estructurar clases o ficheros de configuración diferenciados para desarrollo, test y producción, y cómo cargarlos dinámicamente a partir de variables de entorno. Se discuten los valores sensibles que nunca deben residir en el repositorio de código.

Autenticación basada en tokens y control de acceso. Se integra Flask-JWT-Extended para emitir, verificar y revocar tokens de acceso. El bloque diferencia la implementación de rutas públicas frente a rutas protegidas y describe la gestión del ciclo de vida del token, incluyendo refresco y manejo de tokens expirados o inválidos.

Manejo centralizado de errores y serialización de datos. Se diseña un sistema de error handlers registrados en el factory que devuelve respuestas JSON coherentes para los códigos 400, 401, 404 y 500. Paralelamente se compara la serialización manual con el uso de Marshmallow o Pydantic, evaluando ambas opciones según criterios de validación, rendimiento y mantenibilidad del código.

Depuración y pruebas automatizadas. El bloque final aborda la depuración sistemática de fallos comunes en el ciclo de vida de una petición —errores de contexto de aplicación, relaciones ORM cargadas de forma incorrecta y tokens mal formados— empleando logs estructurados y el debugger integrado de Flask. A continuación se construye una suite de pruebas con pytest, utilizando fixtures que levantan una instancia de la aplicación en modo test, y se cubren los flujos críticos de creación de recursos, consulta y autenticación.

  • Python 3.10 o superior instalado en la máquina local.
  • Gestor de paquetes pip y capacidad para crear entornos virtuales con venv o conda.
  • Editor de código con soporte para Python (VS Code con extensión Pylance recomendado).
  • Cliente HTTP para probar endpoints: Postman, Insomnia o extensión REST Client para VS Code.
  • Motor de base de datos SQLite (incluido en la biblioteca estándar de Python) para los ejercicios locales; opcionalmente PostgreSQL si se desea trabajar con un motor de producción.
  • Git instalado para gestionar el proyecto de prácticas.
  • Acceso a internet para instalar paquetes desde PyPI: flask, flask-sqlalchemy, flask-migrate, flask-jwt-extended, marshmallow y pytest.
  • Manejo fluido de Python 3: funciones, clases, decoradores y gestión de entornos virtuales.
  • Conocimiento de los conceptos fundamentales de Flask: rutas, vistas, plantillas y el objeto request/response (equivalente al contenido de FLA01).
  • Familiaridad básica con SQL relacional: creación de tablas, claves primarias y relaciones foráneas.
  • Comprensión del protocolo HTTP: métodos, códigos de estado y cabeceras más comunes.
  • Uso básico de la línea de comandos y de pip para gestionar dependencias.