Controladores en NestJS: Creación y Gestión de Endpoints HTTP
Clase 6 de 23 • Curso de Backend con NestJS
Resumen
El concepto más básico para desarrollar una aplicación con NestJS son los Controladores.
Qué son los controladores en NestJS
Los Controladores manejarán las rutas o endpoints que la aplicación necesite, además de validar los permisos del usuario, filtro y manipulación de datos.
Estructura de un controlador
La aplicación de NestJS creada por defecto con el CLI con el comando nest new <project-name>
trae consigo un controlador básico con el nombre app.controller.ts
. Verás que dicho archivo contiene una clase que a su vez posee un decorador llamado @Controller()
.
Dicho decorador le indica al compilador de NestJS que esta clase tendrá el comportamiento de un controlador.
// app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
Los controladores deben ser importados en un módulo para que sean reconocidos los endpoints.
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
@Module({
imports: [],
controllers: [
// Imports de Controladores
AppController
],
})
export class AppModule {}
El controlador importa un servicio que son los responsables de la lógica y obtención de datos desde una BBDD que el controlador requiere.
// app.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
}
Puedes correr el servidor de NestJS con el comando npm run start:dev
e ingresar a la ruta localhost:3000/
para visualizar el contenido que el controlador envía.
Si quieres crear una nueva ruta, basta con crear un método en la clase del controlador y colocarle el decorador @Get()
con un nombre para el nuevo endpoint.
// app.controller.ts
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
@Get('new-endpoint')
newEndpoint(): string {
return 'New endpoint';
}
}
Ingresa a esta nueva ruta desde localhost:3000/new-endpoint
para visualizar su respuesta y así crear los endpoints que necesites.
Contribución creada por: Kevin Fiorentino.