NestJS

Nest

Tutorial Nest: Métodos DELETE en controladores

Nest controladores DELETE: creación y uso. Aprende a crear y usar controladores DELETE en Nest con ejemplos prácticos y detallados.

En NestJS, uno de los métodos HTTP más comunes es el método DELETE. Este método permite eliminar un recurso específico identificado por su ID o cualquier otro parámetro único.

Para definir un método DELETE en un controlador de NestJS, se utiliza el decorador @Delete() en una función dentro de la clase del controlador. Esta función manejará las solicitudes DELETE a la ruta especificada.

Creación de un controlador con método DELETE

Para empezar, se creará un controlador.

NestJS proporciona una serie de decoradores que ayudan en la definición de rutas y métodos.

El decorador @Delete() especifica que el método subsiguiente será utilizado para manejar las solicitudes HTTP DELETE.

Ejemplo:

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

@Controller('items')
export class ItemsController {
    
    @Delete(':id')
    async deleteItem(@Param('id') id: string): Promise<string> {
        // Aquí iría la lógica para eliminar el ítem.
        return `Ítem ${id} eliminado con éxito.`;
    }
}

En este ejemplo, se tiene un controlador para items. El método deleteItem está designado para manejar las solicitudes DELETE dirigidas a /items/:id, donde :id es un parámetro que representa el identificador del ítem a eliminar.

El decorador @Param('id') se utiliza para extraer el parámetro id de la ruta. De este modo, si alguien envía una solicitud DELETE a /items/123, el método deleteItem recibirá '123' como el valor de id.

Implementación de la lógica de eliminación

El método anterior es sólo un esqueleto. En una aplicación real, se necesita conectar este controlador a un servicio que gestione la lógica de negocio. Este servicio puede interactuar con una base de datos, un sistema de archivos, una API externa, entre otros.

Ejemplo con un servicio:

Primero, se crea un servicio:

import { Injectable } from '@nestjs/common';

@Injectable()
export class ItemsService {
    
    async delete(id: string): Promise<string> {
        // Aquí iría la lógica para eliminar el ítem en la base de datos.
        return `Ítem ${id} eliminado con éxito.`;
    }
}

Luego, se integra el servicio en el controlador:

import { Controller, Delete, Param } from '@nestjs/common';
import { ItemsService } from './items.service';

@Controller('items')
export class ItemsController {
    
    constructor(private readonly itemsService: ItemsService) {}

    @Delete(':id')
    async deleteItem(@Param('id') id: string): Promise<string> {
        return this.itemsService.delete(id);
    }
}

Ahora, el método deleteItem del controlador utiliza el servicio ItemsService para llevar a cabo la eliminación real del ítem.

Manejo de errores

En una aplicación real, es probable que surjan situaciones donde no se pueda eliminar un ítem debido a diversas razones, como la no existencia del ítem o errores internos del servidor. NestJS ofrece herramientas para manejar estos errores de manera eficiente.

Ejemplo con manejo de errores:

Modificaremos el servicio para simular un escenario donde el ítem no se encuentra:

import { Injectable, NotFoundException } from '@nestjs/common';

@Injectable()
export class ItemsService {
    
    async delete(id: string): Promise<string> {
        // Simulación: Si el ID es '404', simular que el ítem no se encuentra.
        if (id === '404') {
            throw new NotFoundException(`Ítem ${id} no encontrado.`);
        }

        // Aquí iría la lógica para eliminar el ítem en la base de datos.
        return `Ítem ${id} eliminado con éxito.`;
    }
}

El decorador NotFoundException de NestJS permite lanzar un error con un código de estado 404 (No encontrado).

Conclusión

Los métodos DELETE en controladores de NestJS ofrecen una forma efectiva de eliminar datos específicos, proporcionando a los desarrolladores el control necesario para garantizar la integridad y seguridad de la información.

Certifícate en Nest con CertiDevs PLUS

Ejercicios de esta lección Métodos DELETE en controladores

Evalúa tus conocimientos de esta lección Métodos DELETE en controladores con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Nest

Accede a todas las lecciones de Nest y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Nest

Supera todos los ejercicios de programación del curso de Nest y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender el propósito de los métodos DELETE.
  2. Aprender cómo implementar métodos DELETE en controladores de NestJS utilizando el decorador @Delete().
  3. Entender cómo definir rutas para manejar solicitudes DELETE.
  4. Aprender cómo manejar errores en métodos DELETE.