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)
// 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)
// 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.phporoutes/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ón | Laravel (PHP) | NestJS (TypeScript) |
|---|---|---|
| Ruta GET | Route::get('/cats', 'CatController@index') | @Get() dentro de @Controller('cats') |
| Ruta POST | Route::post('/cats', 'CatController@store') | @Post() dentro del controlador |
| Ruta con parámetro | Route::get('/cats/{id}', 'CatController@show') | @Get(':id') y @Param('id') |
NestJS (ejemplo con parámetros)
@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:
php artisan make:controller CatController --resourceEsto crea métodos para index, create, store, show, edit, update, destroy.
En NestJS, el equivalente es:
nest g resource catsEsto 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
| Concepto | Laravel (PHP) | NestJS (TypeScript) |
|---|---|---|
| Controlador | Clase con métodos manejados por rutas en routes/web.php | Clase con métodos decorados (@Get(), @Post()) |
| Rutas | Definidas en routes/web.php | Definidas con decoradores dentro del controlador |
| CRUD Automático | php artisan make:controller --resource | nest g resource [nombre] |
| Inyección de Dependencias | Constructor (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
Publicar un comentario