Exercice : Ajouter un magasin de données

Effectué

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 l’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

  1. 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.

    Screenshot of adding a new file to the Models folder in Visual Studio Code.

    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.

  2. 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

  1. 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.

    Screenshot of Visual Studio Code that shows adding a new file to the Services folder.

  2. 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.