Actions CRUD dans ASP.NET Core

Effectué

Notre service de pizza prend en charge les opérations CRUD pour une liste de pizzas. Ces opérations sont effectuées par le biais de verbes HTTP, qui sont mappés via des attributs ASP.NET Core. Comme vous l’avez vu, le verbe de HTTP GET est utilisé pour récupérer un ou plusieurs éléments auprès d’un service. Une telle action est annotée avec l’attribut [HttpGet].

Le tableau suivant montre le mappage des quatre opérations que nous implémentons pour le service de pizzas :

Verbe d’action HTTP Opération CRUD Attribut ASP.NET Core
GET Lire [HttpGet]
POST Créer [HttpPost]
PUT Update [HttpPut]
DELETE Supprimer [HttpDelete]

Vous avez déjà vu comment les actions GET fonctionnent. Nous allons en apprendre plus sur les actions POST, PUT et DELETE.

POST

Pour permettre aux utilisateurs d’ajouter un nouvel élément au point de terminaison, vous devez implémenter l’action POST à l’aide de l’attribut [HttpPost]. En passant l’élément (dans cet exemple, une pizza) à la méthode en tant que paramètre, ASP.NET Core convertit automatiquement les applications/JSON envoyées au point de terminaison en un objet Pizza .NET renseigné.

Voici la signature de méthode de la méthode Create que vous allez implémenter dans la section suivante :

[HttpPost]
public IActionResult Create(Pizza pizza)
{            
    // This code will save the pizza and return a result
}

L’attribut [HttpPost] mappe les requêtes HTTP POST envoyées à http://localhost:5000/pizza avec la méthode Create(). Au lieu de retourner une liste de pizzas, comme nous l’avons vu avec la méthode Get(), cette méthode retourne une réponse IActionResult.

IActionResult permet au client de savoir si la demande a réussi et fournit l’ID de la pizza nouvellement créée. IActionResult utilise des codes d’état HTTP standard. Il s’intègre ainsi facilement aux clients, quel que soit le langage ou la plateforme sur laquelle ils s’exécutent.

ASP.NET Core
Résultat de l’action
Code d’état HTTP Description
CreatedAtAction 201 La pizza a été ajoutée au cache en mémoire.
La pizza est incluse dans le corps de la réponse dans le type de média, comme défini dans l’en-tête de la requête HTTP accept (JSON par défaut).
BadRequest est implicite 400 L’objet pizza du corps de la demande est non valide.

Heureusement, ControllerBase a des méthodes utilitaires qui créent les codes et les messages de réponse HTTP appropriés pour vous. Vous allez découvrir comment le fonctionnement de ces méthodes dans l’exercice suivant.

PUT

La modification ou la mise à jour d’une pizza dans notre inventaire est semblable à la méthode POST que vous avez implémentée, mais elle utilise l’attribut [HttpPut] et prend le paramètre id en plus de l’objet Pizza qui doit être mis à jour :

[HttpPut("{id}")]
public IActionResult Update(int id, Pizza pizza)
{
    // This code will update the pizza and return a result
}

Chaque ActionResult utilisé dans l’action précédente est mappé au code d’état HTTP correspondant du tableau suivant :

ASP.NET Core
Résultat de l’action
Code d’état HTTP Description
NoContent 204 La pizza a été mise à jour dans le cache en mémoire.
BadRequest 400 La valeur Id du corps de la demande ne correspond pas à la valeur id de la route.
BadRequest est implicite 400 L’objet Pizza du corps de la demande est non valide.

DELETE

L’une des actions les plus faciles à implémenter est l’action DELETE, qui prend seulement le paramètre id de la pizza à supprimer du cache en mémoire :

[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
    // This code will delete the pizza and return a result
}

Chaque ActionResult utilisé dans l’action précédente est mappé au code d’état HTTP correspondant du tableau suivant :

ASP.NET Core
Résultat de l’action
Code d’état HTTP Description
NoContent 204 La pizza a été supprimée du cache en mémoire.
NotFound 404 Une pizza correspondant au paramètre id fourni n’existe pas dans le cache en mémoire.

L’exercice de la leçon suivante montre comment prendre en charge chacune des quatre actions dans l’API web.

Contrôler vos connaissances

1.

Supposons que vous devez mettre à jour le nom d’un produit. Quel verbe d’action HTTP est le mieux adapté pour cette requête ?

2.

Dans quel scénario est-il plus approprié de retourner un code d’état HTTP 404, et comment cela se passe-t-il dans ASP.NET Core ?