Módulo 8·proyecto·12h
Objetivos de aprendizaje
- Construir una API RESTful completa con MVC, file upload y autenticación JWT
- Integrar access token + refresh token con secretos distintos y rotación
- Proteger rutas de escritura por rol y rutas de lectura por autenticación
- Subir imágenes de guitarras y servirlas como contenido estático
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 desarrolladas en el 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. Implementa el endpointPOST /api/v1/guitarras/:guitarId/imagenque suba la imagen auploads/y actualice el campoimagendel registro. - Sirve la carpeta
uploads/como contenido estático:app.use('/uploads', express.static('uploads')), y devuelve la URL pública en la respuesta. - Implementa el servicio de autenticación:
loginService,refreshTokenService,logoutServiceyverifyAccessTokenServicecon par de secretos (JWT_ACCESS_SECRET/JWT_REFRESH_SECRET), blacklist en memoria y rotación de refresh tokens. - Crea el middleware
authenticateJWTy el factoryauthorizeRoles. Protege todas las rutas de guitarras: lectura requiere autenticación, escritura requiere roladmin. - Añade los endpoints públicos
POST /auth/login,GET /auth/refreshyPOST /auth/logout(este último requiere access token válido). - 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 (controllers, services, middlewares, utils, database, v1/routes)
.env.samplecon todas las variables requeridas sin valores realesREADME.mdcon instrucciones de instalación, ejecución y ejemplos de los endpoints concurlo Postman- El repositorio no debe incluir
node_modules/,.envcon credenciales reales ni la carpetauploads/con archivos subidos