Aller au contenu principal

28-9 Ajout de l'action remove au contrôleur de projets

Afin de compléter le CRUD, il nous reste à pouvoir supprimer des projets.

Comme précédemment, cela requiert une fonction dans le service, ainsi qu'une nouvelle fonction au niveau du contrôleur.

Ajouter une fonction supprimer() au service ProjetsService

Le service reçoit simplement l'identifiant du projet à supprimer et supprime ce dernier de la liste.

src/projets/projets.service.ts
supprimer(id: number) {
const projetIndex = this.projets.findIndex((projet) => {
return projet.id === id;
});

if (projetIndex !== -1) {
this.projets.splice(projetIndex, 1);
}
}

Ajouter une fonction remove() au contrôleur ProjetsControler

Finalement, au niveau du contrôleur, de façon similaire au service, on récupère l'id du projet provenant de la requête (via @Param).

On utilise la méthode HTTP DELETE, et donc le décorateur @Delete() pour cette action.

src/projets/projets.controller.ts
@Delete(':id')
remove(@Param('id') id: string) {
return this.projetsService.supprimer(+id);
}

Il est possible de premièrement vérifier que le projet existe et de retourner une erreur si ce dernier n'existe pas.

src/projets/projets.controller.ts
@Delete(':id')
remove(@Param('id') id: string) {
const projet = this.projetsService.obtenir(+id);

if (!projet) throw new NotFoundException();

return this.projetsService.supprimer(+id);
}

Test Postman

Testez via Postman à l'aide d'une requête DELETE vers un projet spécifique:

  • Type: DELETE
  • URL: http://localhost:3000/projets/2

Vous devriez recevoir une réponse 200 OK.

Vous pouvez tenter une requête GET vers un identifiant de projet que vous venez de supprimer et devriez recevoir une erreur 404.