2-1-Analogía Laravel ↔ NestJS

 

 Analogía Laravel ↔ NestJS

1. Controladores (Controllers)

En Laravel, un controlador es una clase que maneja la lógica de las rutas y devuelve respuestas. Por ejemplo:

Laravel (PHP)

php
Copy
Download
// En routes/web.php
Route::get('/cats', 'CatController@index');

// En app/Http/Controllers/CatController.php
class CatController extends Controller {
    public function index() {
        return view('cats.index');
    }
}

NestJS (TypeScript)

typescript
Copy
Download
// En el controlador
import { Controller, Get } from '@nestjs/common';

@Controller('cats') // Equivalente a Route::prefix('cats') en Laravel
export class CatsController {
  @Get() // Equivalente a Route::get('/cats', ...)
  findAll() {
    return 'Todos los gatos';
  }
}

📌 Similitudes:

  • Ambos frameworks usan clases para definir controladores.

  • Tienen métodos que responden a rutas específicas (GET, POST, etc.).

📌 Diferencias:

  • En Laravel, las rutas se definen en un archivo aparte (routes/web.php o routes/api.php).

  • En NestJS, las rutas se definen dentro del controlador usando decoradores (@Get()@Post(), etc.).


2. Decoradores (Decorators) ↔ Rutas en Laravel

En Laravel, las rutas se definen en un archivo de rutas, pero en NestJS, se usan decoradores para asignar rutas directamente en el controlador.

Ejemplo comparativo:

AcciónLaravel (PHP)NestJS (TypeScript)
Ruta GETRoute::get('/cats', 'CatController@index')@Get() dentro de @Controller('cats')
Ruta POSTRoute::post('/cats', 'CatController@store')@Post() dentro del controlador
Ruta con parámetroRoute::get('/cats/{id}', 'CatController@show')@Get(':id') y @Param('id')

NestJS (ejemplo con parámetros)

typescript
Copy
Download
@Controller('cats')
export class CatsController {
  @Get(':id') // Equivalente a Route::get('/cats/{id}', ...)
  findOne(@Param('id') id: string) {
    return `Gato con ID ${id}`;
  }
}

📌 Los decoradores en NestJS reemplazan la definición de rutas en Laravel.


3. Generación automática de CRUD

En Laravel, puedes usar Artisan para generar controladores:

bash
Copy
Download
php artisan make:controller CatController --resource

Esto crea métodos para indexcreatestoreshoweditupdatedestroy.

En NestJS, el equivalente es:

bash
Copy
Download
nest g resource cats

Esto genera:

  • Un controlador con métodos CRUD (@Get()@Post()@Put()@Delete()).

  • Un servicio (similar a un Repository o Service en Laravel).

  • Un módulo (similar a un Service Provider en Laravel).


🔥 Resumen de la Analogía

ConceptoLaravel (PHP)NestJS (TypeScript)
ControladorClase con métodos manejados por rutas en routes/web.phpClase con métodos decorados (@Get()@Post())
RutasDefinidas en routes/web.phpDefinidas con decoradores dentro del controlador
CRUD Automáticophp artisan make:controller --resourcenest g resource [nombre]
Inyección de DependenciasConstructor (Ej: __construct(CatRepository $repo))Constructor con tipos (Ej: constructor(private catsService: CatsService))

🎯 Conclusión

  • NestJS es como Laravel, pero para Node.js y con TypeScript.

  • Los decoradores (@Get()@Post()) en NestJS reemplazan las definiciones de rutas de Laravel.

  • La estructura es similar (controladores, servicios, inyección de dependencias), pero NestJS es más modular y usa decoradores.

Si tienes más dudas o quieres un ejemplo concreto (como middleware, servicios o bases de datos), ¡avísame! 🚀

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