NestJS Semana 2: módulos, controladores y proveedores

Guía para Rails que migra a NestJS: aprende módulos, controllers y providers, DI, DTOs y validación, Guards e Interceptors, pruebas y despliegue con Docker.

18 ago 2025 • 6 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Semana 2 — NestJS: módulos, controllers, providers

Objetivo Dominar los conceptos clave de NestJS aplicables para desarrolladores con experiencia en Rails, entender la arquitectura basada en módulos, aprovechar la inyección de dependencias y aplicar buenas prácticas en validación, seguridad y despliegue.

Índice Objetivo y arranque rápido, Arquitectura comparada con Rails, Estructura y anatomía de un módulo, Inyección de dependencias y tipos de providers, DTOs y validación avanzada, Guards interceptors y middleware, Testing unitario e integración, Deployment y producción con Docker, Ejercicios prácticos y checklist final.

Quick start Instalar NestJS CLI con npm i -g @nestjs/cli. Crear un proyecto nuevo nest new blog-api y entrar al directorio. Instalar class-validator y class-transformer para validación. Generar un recurso con nest g resource posts y ejecutar en modo desarrollo con npm run start:dev.

Comparación mental Rails vs NestJS En Rails la aplicación se organiza por convenciones centralizadas como ApplicationController y initializers. En NestJS la unidad principal es el módulo AppModule que registra controllers y providers. Controllers manejan rutas HTTP en ambos mundos, pero en NestJS la inyección de dependencias es explícita mediante constructores y decoradores. Middlewares, Guards e Interceptors permiten controlar el flujo de request de forma modular.

Flujo de petición Request pasa por middleware global, luego por Guards para autenticación y autorización, después Interceptors ejecutan lógica antes y después del controller, Pipes validan y transforman entrada, el controller llama a services que implementan la lógica de negocio, y finalmente los interceptors pueden transformar la respuesta.

Estructura típica de proyecto src contiene app.module.ts app.controller.ts main.ts y módulos por dominio como posts con dto controllers services y entities. Un módulo agrupa controllers y providers y puede exportar servicios para ser usados por otros módulos.

Inyección de dependencias NestJS provee DI automática. Los providers pueden ser constantes useValue, factories useFactory o clases useClass. Se pueden inyectar tokens personalizados con Inject. Esto facilita testing y sustitución de implementaciones en entornos de prueba.

Tipos de providers Valor constante para claves y configuraciones, factory para inicializadores complejos como conexiones a bases de datos, y clase alternativa para mocks en pruebas. Usar ConfigModule para gestionar variables de entorno y centralizar la configuración.

DTOs y validación En lugar de strong parameters, NestJS utiliza DTOs declarativos con class-validator y class-transformer. Configurar ValidationPipe globalmente permite whitelist, forbiddance de propiedades extra y transformación automática de tipos. Se pueden crear validaciones condicionales, personalizadas y aplicar transformaciones como trim y normalización en DTOs.

Manejo de errores de validación Es recomendable personalizar la excepción que devuelve detalles de validación para mantener respuestas consistentes y útiles para clientes y logs. Crear un pipe personalizado permite formatear error payload con timestamp y lista de errores por campo.

Guards Equivalentes potentes a before_action de Rails. Implementan la interfaz CanActivate y pueden hacer llamadas a servicios para validar tokens, roles o API keys. Pueden aplicarse a nivel de controlador o a nivel de método. Usar Reflector y decoradores personalizados facilita crear guards basados en metadata como roles necesarios.

Interceptors Similares a around_action pero más versátiles. Permiten medir tiempos, atrapar errores, transformar respuestas y añadir metadatos. Un interceptor puede envolver la ejecución del handler y usar operadores RX para mapear o manejar errores y añadir campos como timestamp o path en la respuesta.

Middleware Se usa para lógica que corre antes de que Nest procese la ruta como logging, parsing o rate limiting básico. Se registra en configure del AppModule con MiddlewareConsumer y puede aplicarse a rutas concretas o a todas.

Orden de ejecución Middleware global, Guards, Interceptors before, Pipes de validación, Controller, Services, Interceptors after, Response. Conocer este orden ayuda a ubicar dónde implementar autenticación, métricas, validaciones y transformación de respuestas.

Testing NestJS viene con Jest listo para usar. Es fácil crear tests unitarios inyectando providers mockeados via TestingModule y pruebas de integración o E2E con supertest creando una instancia de INestApplication y aplicando los mismos pipes de validación que en producción. Testear Guards e Interceptors con ExecutionContext mockeado permite validar comportamiento aislado.

Deployment y producción Construir con npm run build y servir los archivos transpilados desde dist. Usar ConfigModule para leer variables de entorno como puerto base base de datos y JWT. Añadir helmet rate limiting y CORS controlado en main.ts para seguridad. Preparar Dockerfile basado en node alpine y un docker-compose con servicio de base de datos para orquestar despliegues locales.

Buenas prácticas para producción Habilitar disableErrorMessages en ValidationPipe en entorno production para evitar filtrar información sensible. Implementar filtros globales de excepciones para normalizar errores y registrar logs estructurados. Monitorización y métricas deben exportarse a soluciones externas o almacenarse en servicios cloud.

Ejercicios recomendados Implementar CRUD completo para posts con DTOs y validaciones, crear un guard que valide encabezados X-API-Key y permita endpoints públicos, desarrollar un interceptor de métricas que mida tiempos y cuente requests, y modelar una relación posts comments con CRUD y tests. Implementar rate limiting por IP y por API key con diferentes límites por endpoint y almacenamiento en memoria o cache distribuida para producción.

Troubleshooting común Circular dependency ocurre cuando dos servicios se inyectan mutuamente. Soluciones habituales incluyen extraer interfaces o servicios comunes a un módulo nuevo, usar forwardRef cuando es estrictamente necesario o reestructurar dependencias para romper el ciclo.

Checklist final Comprender Modules Controllers y Services, crear DTOs con validaciones complejas, distinguir cuándo usar Guards Interceptors o Middleware, dominar inyección de dependencias, escribir tests unitarios e integración, manejar errores globalmente y preparar pipeline de despliegue con Docker y políticas de seguridad.

Sobre Q2BSTUDIO Q2BSTUDIO es una empresa de desarrollo de software a medida especializada en aplicaciones a medida y software a medida para empresas que buscan soluciones personalizadas. Contamos con experiencia en inteligencia artificial y ia para empresas, desarrollo de agentes IA y servicios de inteligencia de negocio incluyendo power bi. Ofrecemos además servicios cloud aws y azure, ciberseguridad y consultoría para diseñar arquitecturas seguras y escalables. Nuestro equipo entrega soluciones integrales que combinan desarrollo backend frontend microservicios y automatización con enfoque en resultados y continuidad operativa.

Por qué elegirnos Elegir Q2BSTUDIO significa disponer de un socio que entiende la transformación digital y ofrece servicios que abarcan desde aplicaciones a medida hasta proyectos avanzados de inteligencia artificial, agentes IA y reporting con power bi. Implementamos prácticas de ciberseguridad desde el diseño y aprovechamos servicios cloud aws y azure para asegurar escalabilidad y resiliencia.

Palabras clave aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Nota final Este material sirve como guía práctica para desarrolladores Rails que migran o amplían su stack con NestJS. Aplicando estos conceptos se acelera la adopción de patrones modulares inyección de dependencias y pruebas automatizadas que elevan la calidad de código y la seguridad en produccion.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat