1-Enrutamiento #

Enrutamiento #

En el siguiente ejemplo, usaremos el @Controller()decorador, necesario para definir un controlador básico. Especificaremos un prefijo de ruta opcional de cats. Usar un prefijo de ruta en el @Controller()decorador nos ayuda a agrupar rutas relacionadas y reduce la repetición de código. Por ejemplo, si queremos agrupar rutas que gestionan interacciones con una entidad cat bajo la /catsruta, podemos especificar el catsprefijo de ruta en el @Controller()decorador. De esta forma, no es necesario repetir esa parte de la ruta para cada ruta del archivo


import { Controller, Get } from '@nestjs/common';


@Controller('cats')

export class CatsController {

  @Get()

  findAll(): string {

    return 'This action returns all cats';

  }

}

Enrutamiento en NestJS vs Laravel: Explicación y Analogía

Enrutamiento en NestJS

En NestJS, el enrutamiento se maneja principalmente a través de decoradores en los controladores:

typescript
Copy
Download
import { Controller, Get, Post, Param } from '@nestjs/common';

@Controller('users')
export class UsersController {
  @Get()
  findAll(): string {
    return 'Todos los usuarios';
  }

  @Get(':id')
  findOne(@Param('id') id: string): string {
    return `Usuario ${id}`;
  }

  @Post()
  create(): string {
    return 'Usuario creado';
  }
}

Características clave:

  • Los decoradores como @Controller@Get@Post definen las rutas

  • Los parámetros de ruta se capturan con @Param

  • El enrutamiento es muy declarativo y organizado por clases

Enrutamiento en Laravel

En Laravel, las rutas típicamente se definen en archivos como routes/web.php o routes/api.php:

php
Copy
Download
use App\Http\Controllers\UserController;

Route::get('/users', [UserController::class, 'index']);
Route::get('/users/{id}', [UserController::class, 'show']);
Route::post('/users', [UserController::class, 'store']);

O usando resource:

php
Copy
Download
Route::resource('users', UserController::class);

Analogía: Sistema de Correos vs Cartero

NestJS es como un sistema de correos moderno y automatizado:

  • Cada departamento (controlador) sabe exactamente qué paquetes (solicitudes) manejar

  • Las etiquetas (decoradores) definen claramente qué va dónde

  • Todo está bien organizado y tipado desde el principio

Laravel es como un cartero tradicional:

  • Todas las cartas (rutas) se registran en una oficina central (archivo de rutas)

  • El cartero (Router de Laravel) sabe a qué casa (controlador) llevar cada carta

  • Es más flexible en la definición pero menos organizado automáticamente

Diferencias clave

  1. Organización:

    • NestJS: Las rutas están adjuntas a los controladores

    • Laravel: Las rutas están centralizadas en archivos separados

  2. Sintaxis:

    • NestJS usa decoradores TypeScript

    • Laravel usa métodos estáticos PHP

  3. Tipado:

    • NestJS tiene tipado fuerte en rutas y parámetros

    • Laravel es más flexible pero menos tipado

  4. Rutas RESTful:

    • En NestJS se declaran manualmente o con @Resource

    • En Laravel se pueden generar con Route::resource

Ambos frameworks permiten middleware, agrupación de rutas y otras características avanzadas, pero con enfoques diferentes.

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