28-4 Suppression (Delete)
Dernier arrêt, être en mesure de supprimer des événements via l'API!
Coquille Contrôleur/Service/Repository
Pour procéder à une suppression d'événement, le contrôleur d'API recevra la requête HTTP
à traiter, appellera ensuite le service EvenementService
qui pour sa part appellera la couche de données via EvenementRepository
pour supprimer les données.
Contrôleur - EvenementsController#Delete
Pour supprimer un événement via l'API, il sera nécessaire d'avoir une action d'API répondant à la méthode HTTP DELETE
et recevant en paramètre le id de l'événement à supprimer.
/// <summary>
/// DELETE /api/evenements/{id}
/// Permets de supprimer un événement
/// </summary>
/// <param name="id">Le id de l'événement à supprimer</param>
/// <returns></returns>
[HttpDelete("{id:int}")]
public async Task<IActionResult> Delete(int id)
{
throw new NotImplementedException();
}
Repository EvenementRepository#Delete
Dans un second temps, ajoutons à l'interface du repository la fonction Delete
qui prend en paramètre un événement et retourne si la suppression a été un succès.
public interface IEvenementRepository
{
Task<List<Evenement>> GetAll();
Task<List<Evenement>> FindByVilleId(int villeId);
Task<Evenement?> FindById(int id);
Task<Evenement> Create(Evenement evenement);
Task<bool> Update(Evenement evenement);
Task<bool> Delete(int id);
}
Ensuite, il est possible de faire Implement missing members
à partir de l'aide contextuelle de Rider dans la classe EvenementRepository
.
public async Task<bool> Delete(int id)
{
throw new NotImplementedException();
}
Vous devez implémenter vous-même le détail de la fonction de suppression du repository, soit de supprimer l'entrée dans la base de données. Vous pouvez vous baser sur la fonction de suppression de question.
Service - EvenementService#Delete
Finalement, dans l'interface IEvenementService
, on ajoute la fonction Delete
:
public interface IEvenementService
{
Task<List<Evenement>> GetAll();
Task<List<Evenement>> FindByVilleId(int? villeId);
Task<Evenement?> FindById(int id);
Task<Evenement> Create(Evenement evenement);
Task<bool> Update(Evenement evenement);
Task<bool> Delete(int id);
}
Pour ensuite implémenter via Implement missing members
la fonction dans EvenementService
et appeler le repository.
public async Task<bool> Delete(int id)
{
return await _evenementRepository.Delete(id);
}
Compléter EvenementController#Delete
Le détail de la fonction sera très simple dans ce cas-ci. En effet, si supprimer l'événement est un succès, on retourne 200 Ok
. Si la suppression n'a pas fonctionné, c'est fort probablement puisque le id n'existe pas: la requête de suppression est extrêmement simple. On retournera dans ce cas 404 Not Found
.
public async Task<IActionResult> Delete(int id)
{
bool resultat = await _evenementService.Delete(id);
return resultat ? Ok() : NotFound();
}
Tester via Postman
Assurez-vous d'avoir implémenté la fonction de suppression Delete
du repository!
Pour tester, vous pouvez utiliser Postman
ou Scalar
.
- Assurez-vous que votre projet .NET est démarré et recompilé pour contenir les derniers changements
- Assurez-vous de choisir
DELETE
comme méthode - Entrez comme URL http://[url-de-votre-projet]/api/evenements/[id-evenement]
Voilà, vous avez une API fonctionnelle permettant de faire la gestion complète des événements!