Arquitectura de APIs
Evolución de APIs funcionales hacia sistemas modulares, validados, protegidos y documentados.
Temario del Módulo (8 lecciones)
Cuando server.js deja de escalar
Diagnóstico arquitectónico de una API funcional que ha crecido demasiado: responsabilidades mezcladas, acoplamiento, cohesión y fronteras antes de refactorizar DataTrack.
Rutas y controladores: separar HTTP
Primera refactorización arquitectónica de DataTrack: agrupar endpoints con express.Router, trasladar la traducción HTTP a controllers y separar la configuración de Express del arranque del servidor sin cambiar el contrato externo.
Servicios y repositorios: reglas frente a persistencia
Separación pragmática de la lógica de aplicación y el acceso a datos en DataTrack mediante services, repositories y una conexión SQLite compartida, conservando el contrato HTTP existente.
Contratos ejecutables con Zod y DTOs
Contratos de entrada con Zod y representaciones de salida explícitas mediante DTOs, conservando el comportamiento público de DataTrack.
Errores de dominio y middleware centralizado
Representación explícita de errores esperados y traducción HTTP centralizada en DataTrack, distinguiéndolos de fallos inesperados sin alterar el contrato de la API.
APIs de colección: paginación, filtros y ordenación
Diseño de colecciones HTTP controladas mediante paginación, búsqueda, filtros y ordenación segura sobre SQLite, con criterios validados y metadatos coherentes.
Identidad, contraseñas y sesiones seguras
Autenticación de usuarios en DataTrack mediante derivación de contraseñas con scrypt, sesiones opacas persistidas y cookies con atributos de seguridad.
Autorización y propiedad de recursos
Autorización por propiedad en DataTrack mediante identidad autenticada, ownership directo de proyectos e indirecto de tareas, con decisiones explícitas entre 401, 403 y 404.
Objetivos del Módulo
- ✓ Separar responsabilidades mediante rutas, controladores, servicios y repositorios
- ✓ Definir contratos ejecutables, validación estructurada y errores centralizados
- ✓ Implementar autenticación con sesiones opacas y autorización por propiedad de recursos
- ✓ Diseñar colecciones paginadas y documentar formalmente la API con OpenAPI