40. Post, Patch y Delete
Implementando un CRUD Básico en NestJS: Guía Paso a Paso
En esta entrada, veremos cómo implementar los endpoints básicos de un CRUD (Create, Read, Update, Delete) en NestJS, utilizando un controlador de Cars como ejemplo.
1. Estructura Inicial del Controlador
Empecemos con un controlador básico que ya tiene el método GET para leer datos:
import { Controller, Get, Post, Patch, Delete, Body, Param, ParseIntPipe } from '@nestjs/common';
@Controller('cars')
export class CarsController {
@Get()
getAllCars() {
return ['Toyota', 'Honda', 'Volvo'];
}
@Get(':id')
getCarById(@Param('id', ParseIntPipe) id: number) {
return `Carro con ID ${id}`;
}
}2. Crear un Nuevo Recurso (POST)
Para crear un nuevo carro, usamos el decorador @Post(). Aquí recibimos los datos del cuerpo de la solicitud con @Body():
@Post()
createCar(@Body() body: any) {
return {
ok: true,
method: 'POST',
body
};
}Ejemplo en Postman:
URL:
POST /carsBody:
{ "brand": "Volvo", "model": "XC60" }Respuesta:
{ "ok": true, "method": "POST", "body": { "brand": "Volvo", "model": "XC60" } }
3. Actualizar un Recurso (PATCH)
Para actualizar, usamos @Patch() y combinamos @Param() (para el ID) con @Body() (para los nuevos datos):
@Patch(':id')
updateCar(
@Param('id', ParseIntPipe) id: number,
@Body() body: any
) {
return {
method: 'PATCH',
id,
body
};
}Ejemplo en Postman:
URL:
PATCH /cars/1Body:
{ "model": "XC90" }Respuesta:
{ "method": "PATCH", "id": 1, "body": { "model": "XC90" } }
4. Eliminar un Recurso (DELETE)
Para eliminar, usamos @Delete() y el ID del recurso:
@Delete(':id')
deleteCar(@Param('id', ParseIntPipe) id: number) {
return {
method: 'DELETE',
id
};
}Ejemplo en Postman:
URL:
DELETE /cars/1Respuesta:
{ "method": "DELETE", "id": 1 }
5. Validaciones y Próximos Pasos
Actualmente, nuestro CRUD no valida los datos recibidos (como campos obligatorios o tipos de datos). En futuras entradas, cubriremos:
DTOs (Data Transfer Objects): Para definir la estructura esperada del cuerpo de la solicitud.
Pipes de Validación: Como
class-validatorpara asegurar que los datos sean correctos.Servicios: Donde implementaremos la lógica de negocio (crear, actualizar, etc.).
Conclusión
Con estos decoradores (@Post, @Patch, @Delete), ya tienes la base para un CRUD funcional en NestJS. En la próxima entrada, profundizaremos en cómo validar datos y estructurar mejor el código.
¿Te gustaría ver algún tema en particular? ¡Déjalo en los comentarios!
Código completo: Enlace al repositorio (opcional).
Keywords: NestJS, CRUD, API REST, Backend, TypeScript.
Este post es claro, práctico y sigue un flujo lógico. Si quieres, puedo ajustar el tono o agregar más detalles técnicos. ¡Espero que te sea útil! 🚀
Comentarios
Publicar un comentario