Módulo 8Node.jsExpressJWT
Módulo VIII — API RESTful, File Upload y JWT
En este módulo construyes una API RESTful de producción combinando tres bloques: arquitectura MVC, subida de archivos y autenticación segura con JWT. El proyecto final integra las tres capas sobre la misma base de código.
¿Qué aprenderás?
- Arquitectura MVC — Separación clara en Server → Routes → Controllers → Services → Database con respuestas JSON estandarizadas y HATEOAS.
- File Upload — Middleware
express-fileupload, validación de extensiones, generación de nombres únicos y servicio de archivos estáticos. - JWT fundamentos — Estructura
header.payload.signature,jwt.sign(),jwt.verify(), expiración y esquemaAuthorization: Bearer. - Access + Refresh tokens — Par de secretos distintos, rotación de refresh tokens, blacklist en memoria y middleware
authenticateJWT. - Autorización por roles — Factory
authorizeRolesque protege rutas de escritura para el roladmin.
Proyecto integrador
API de Guitarras con JWT y File Upload
Construir la API RESTful de Guitarras con Node.js y Express integrando las tres capas del módulo: arquitectura MVC, subida de imágenes con express-fileupload y autenticación/autorización con JWT (access + refresh tokens).
Paso a paso
- Parte del proyecto
01-api-mvccomo base: estructura MVC, CRUD completo de guitarras con persistencia endb.json, respuestas estandarizadas, HATEOAS y manejo global de errores. - Añade el campo
imagenal modelo de guitarra. Integraexpress-fileuploadcon límite de 5 MB y extensiones.jpg,.jpeg,.png. ImplementaPOST /api/v1/guitarras/:guitarId/imagenpara subir la imagen auploads/y actualizar el registro. - Sirve la carpeta
uploads/como contenido estático y devuelve la URL pública en la respuesta. - Implementa el servicio de autenticación con
loginService,refreshTokenService,logoutServiceyverifyAccessTokenServiceusando par de secretos y rotación de refresh tokens. - Crea
authenticateJWTy el factoryauthorizeRoles. Protege todas las rutas de guitarras: lectura requiere autenticación, escritura requiere roladmin. - Añade los endpoints
POST /auth/login,GET /auth/refreshyPOST /auth/logout. - Verifica el flujo completo con Postman o Thunder Client: login → token → GET (usuario) → POST/PUT/DELETE (admin) → refresh → logout.
Entregable
Sube el link del repositorio GitHub que contenga:
- Proyecto completo con estructura MVC
.env.samplecon todas las variables requeridas sin valores realesREADME.mdcon instrucciones de instalación y ejemplos de endpoints- El repositorio no debe incluir
node_modules/,.envcon credenciales reales ni la carpetauploads/con archivos subidos