Agrupar rutas por módulos en NestJS es una práctica esencial para mantener una arquitectura organizada y escalable. Los módulos permiten dividir la aplicación en unidades funcionales, donde cada módulo contiene sus propios controladores, servicios y otros componentes.
En NestJS, un módulo es una clase decorada con @Module
que organiza un conjunto de funcionalidades relacionadas. Cada módulo puede contener controladores para definir rutas específicas.
1. Crear un Módulo
Usa el CLI de NestJS para generar un módulo. Esto creará una estructura inicial para agrupar rutas y servicios relacionados.
nest generate module users
Esto genera un archivo users.module.ts
:
import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
@Module({
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule {}
2. Crear un Controlador dentro del Módulo
Genera un controlador para definir las rutas asociadas al módulo:
nest generate controller users
Esto genera un archivo users.controller.ts
donde puedes definir rutas:
import { Controller, Get } from '@nestjs/common';
@Controller('users') // Prefijo de las rutas del módulo
export class UsersController {
@Get()
findAll(): string {
return 'Lista de usuarios';
}
}
3. Registrar el Módulo en el Módulo Raíz
Incluye el módulo en app.module.ts
para que NestJS lo reconozca:
import { Module } from '@nestjs/common';
import { UsersModule } from './users/users.module';
@Module({
imports: [UsersModule],
})
export class AppModule {}
products
)
1. Crear módulo y controlador:
nest generate module products
nest generate controller products
2. Definir rutas en products.controller.ts
:
import { Controller, Get } from '@nestjs/common';
@Controller('products')
export class ProductsController {
@Get()
findAll(): string {
return 'Lista de productos';
}
}
3. Registrar el módulo en app.module.ts
:
import { ProductsModule } from './products/products.module';
@Module({
imports: [ProductsModule],
})
export class AppModule {}
Consulta la documentación oficial de módulos en NestJS para más detalles.
Jorge García
Fullstack developer