Actions CRUD dans ASP.NET Core
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 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 |
Delete | [HttpDelete] |
Vous avez déjà vu comment fonctionnent les actions GET
. 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és 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.