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:
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:
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ódulocontrollers: Controladores que pertenecen a este móduloproviders: Servicios, repositorios, factories, etc. que pueden ser inyectadosexports: 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:
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.)
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
Decoradores de parámetros:
@Req(): Para acceder al objeto Request@Res(): Para acceder al objeto Response
Ejemplo de uso combinado:
@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
Publicar un comentario