Exercice : Ajouter un magasin de données
Avant de commencer à implémenter l’API web pour les pizzas, vous devez disposer d’un magasin de données sur lequel effectuer des opérations.
Vous avez besoin d’une classe model
pour représenter une pizza dans votre inventaire. Le modèle contient des propriétés qui représentent les caractéristiques d’une pizza. Il est utilisé pour passer des données dans l’API web et pour conserver les options des pizzas dans un magasin de données.
Dans cette unité, ce magasin de données sera un simple service de mise en cache dans la mémoire locale. Dans une application réelle, vous envisageriez d’utiliser une base de données, comme SQL Server, avec Entity Framework Core.
Créer un modèle de pizza
Exécutez la commande suivante pour un dossier Models :
mkdir Models
Sélectionnez le dossier Models dans Visual Studio Code et ajoutez un nouveau fichier appelé Pizza.cs.
La racine du projet comprend maintenant un répertoire Models, avec un fichier Pizza.cs vide. Le nom du répertoire Models est une convention. Il provient de l’architecture model-view-controller (Modèle-Vue-Contrôleur) utilisée par l’API web.
Ajoutez le code suivant à Models/Pizza.cs et enregistrez vos changements. Cette classe définit une pizza.
namespace ContosoPizza.Models; public class Pizza { public int Id { get; set; } public string? Name { get; set; } public bool IsGlutenFree { get; set; } }
Ajouter un service de données
Exécutez la commande suivante pour un dossier Services :
mkdir Services
Sélectionnez le dossier dans Visual Studio Code et ajoutez un nouveau fichier appelé PizzaService.cs.
Ajoutez le code suivant à Services/PizzaService.cs et enregistrez vos changements. Ce code crée un service de données de pizza en mémoire.
using ContosoPizza.Models; namespace ContosoPizza.Services; public static class PizzaService { static List<Pizza> Pizzas { get; } static int nextId = 3; static PizzaService() { Pizzas = new List<Pizza> { new Pizza { Id = 1, Name = "Classic Italian", IsGlutenFree = false }, new Pizza { Id = 2, Name = "Veggie", IsGlutenFree = true } }; } public static List<Pizza> GetAll() => Pizzas; public static Pizza? Get(int id) => Pizzas.FirstOrDefault(p => p.Id == id); public static void Add(Pizza pizza) { pizza.Id = nextId++; Pizzas.Add(pizza); } public static void Delete(int id) { var pizza = Get(id); if(pizza is null) return; Pizzas.Remove(pizza); } public static void Update(Pizza pizza) { var index = Pizzas.FindIndex(p => p.Id == pizza.Id); if(index == -1) return; Pizzas[index] = pizza; } }
Ce service fournit un service de mise en cache des données en mémoire simple, avec deux pizzas par défaut. Notre API web utilise ce service à des fins de démonstration. Quand vous arrêtez et démarrez l’API web, le cache de données en mémoire est réinitialisé sur les deux pizzas par défaut du constructeur de
PizzaService
.
Génération du projet d’API web
Exécutez la commande suivante pour générer l’application :
dotnet build
La génération réussit sans avertissements. Si la génération échoue, consultez la sortie pour des informations de dépannage.
Dans l’unité suivante, vous allez créer un contrôleur qui utilisera le modèle Pizza
et la classe PizzaService
.