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.