module. y decoradores

 Conceptos Básicos de NestJS

Voy a explicarte los conceptos que mencionaste sobre NestJS:

1. main.ts

El archivo main.ts es el punto de entrada de una aplicación NestJS. Es donde se inicializa y se lanza la aplicación. Su estructura típica es:

typescript
Copy
Download
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000); // Puerto donde escucha la aplicación
}
bootstrap();

Funciones principales:

  • Crea una instancia de la aplicación NestJS usando NestFactory.create()

  • Especifica el módulo raíz (AppModule)

  • Configura opciones globales como middlewares, pipes, filters, etc.

  • Inicia el servidor en un puerto específico

2. app.module.ts

El archivo app.module.ts es el módulo raíz de la aplicación NestJS. Los módulos son clases decoradas con @Module() que organizan la estructura de la aplicación.

Estructura típica:

typescript
Copy
Download
import { Module } from '@nestjs/common';
import { CatsController } from './cats/cats.controller';
import { CatsService } from './cats/cats.service';

@Module({
  imports: [],       // Otros módulos que este módulo necesita
  controllers: [CatsController], // Controladores del módulo
  providers: [CatsService],      // Servicios/proveedores del módulo
  exports: []        // Qué proveedores se exportan para otros módulos
})
export class AppModule {}

Propiedades del decorador @Module:

  • imports: Lista de módulos requeridos por este módulo

  • controllers: Controladores que pertenecen a este módulo

  • providers: Servicios, repositorios, factories, etc. que pueden ser inyectados

  • exports: Proveedores que están disponibles para otros módulos que importen este módulo

3. Decoradores en NestJS

Los decoradores son funciones especiales que añaden metadatos a clases, métodos o propiedades, permitiendo a NestJS saber cómo deben comportarse.

Principales decoradores en NestJS:

  1. Decoradores de clase:

    • @Controller(): Define una clase como controlador

    • @Module(): Define una clase como módulo

    • @Injectable(): Marca una clase como proveedor (service, repository, etc.)

  2. Decoradores de métodos (rutas):

    • @Get()@Post()@Put()@Delete(), etc.: Definen los métodos HTTP

    • @Param(): Para acceder a parámetros de ruta

    • @Query(): Para acceder a query parameters

    • @Body(): Para acceder al cuerpo de la petición

  3. Decoradores de parámetros:

    • @Req(): Para acceder al objeto Request

    • @Res(): Para acceder al objeto Response

Ejemplo de uso combinado:

typescript
Copy
Download
@Controller('cats') // Decorador de clase
export class CatsController {
  constructor(private readonly catsService: CatsService) {}

  @Get(':id') // Decorador de método
  findOne(@Param('id') id: string): Cat { // Decorador de parámetro
    return this.catsService.findOne(id);
  }
}

Los decoradores son fundamentales en NestJS porque permiten definir el comportamiento de la aplicación de manera declarativa, reduciendo la necesidad de código boilerplate

Comentarios

Entradas más populares de este blog

48. ValidationPipe - Class Validator y Class Transformer

32-Modulos

49. Pipes Globales - A nivel de Aplicación