Saltar al contenido principal

Introducción a NestJS

NestJS es un framework progresivo de Node.js diseñado para construir aplicaciones de servidor (backend) eficientes, confiables y escalables. Está construido con TypeScript de forma nativa y combina elementos de la Programación Orientada a Objetos (POO), la Programación Funcional (FP) y la Programación Reactiva Funcional (FRP).


1. Fundamentos Conceptuales y Arquitectura

NestJS proporciona una arquitectura de aplicación lista para usar (out-of-the-box) que permite a los desarrolladores y equipos crear aplicaciones altamente testeables, escalables, sueltamente acopladas y fáciles de mantener. Se inspira fuertemente en patrones de diseño probados en el desarrollo empresarial, como la Inyección de Dependencias (DI) y la arquitectura modular en capas (similar a Angular o Spring Boot).

Ciclo de Vida de una Solicitud (Request Lifecycle)

En NestJS, las solicitudes HTTP entrantes atraviesan una secuencia ordenada de etapas antes de retornar una respuesta al cliente. Cada etapa cumple una función específica de seguridad, validación, orquestación o manejo de errores:

Ciclo de vida de una solicitud HTTP en NestJS

Etapas del Ciclo de Vida:

  1. Cliente (HTTP Request): El cliente (navegador, aplicación móvil o Postman) emite una petición con método, cabeceras (headers), parámetros y cuerpo (body).
  2. Middlewares: Se ejecutan de primero con acceso a req y res. Se emplean para registros de tráfico (logging), análisis de cookies y habilitación de CORS.
  3. Guards (Guardias): Determinan si la petición tiene autorización para continuar evaluando tokens JWT, sesiones o permisos de roles.
  4. Interceptors (Pre): Se activan antes del controlador para enlazar contexto de ejecución, inicializar auditorías o medir tiempos de respuesta.
  5. Pipes (Tuberías): Validan y transforman los datos de entrada según los esquemas definidos en los DTOs (ej. validación de campos obligatorios o conversión con ParseIntPipe).
  6. Controller y Service: El controlador resuelve la ruta HTTP (@Get, @Post) y delega la ejecución a los servicios inyectados, donde reside la lógica de negocio y persistencia.
  7. Interceptors (Post): Interceptan el valor devuelto por el servicio para mutar, envolver o formatear la estructura final de datos (por ejemplo, encapsular en { data: ... }).
  8. Exception Filters (Filtros de Excepciones): Si ocurre un error no capturado en cualquier punto del ciclo, este filtro estandariza y serializa el mensaje de error en una respuesta HTTP limpia (400, 404, 500).
  9. Respuesta HTTP: El servidor envía el código de estado y el payload JSON final de regreso al cliente.

2. Recurso Visual y Hoja de Ruta

A continuación puedes consultar la presentación interactiva del módulo y la hoja de atajos (Cheatsheet) oficial con los comandos e instrucciones clave de NestJS.



3. Cuestionario de Autoevaluación

Cargando cuestionario...