Oefening: Een gegevensarchief toevoegen

Voltooid

Voordat u begint met het implementeren van een web-API voor pizza, moet u een gegevensarchief hebben waarop u bewerkingen kunt uitvoeren.

U hebt een model klas nodig om een pizza in uw voorraad weer te geven. Het model bevat eigenschappen die de kenmerken van een pizza vertegenwoordigen. Het model wordt gebruikt om gegevens door te geven in de web-API en om pizzaopties in het gegevensarchief vast te houden.

In deze eenheid is dat gegevensarchief een eenvoudige lokale cacheservice in het geheugen. In een echte toepassing zou u overwegen om een database, zoals SQL Server, te gebruiken met Entity Framework Core.

Een pizzamodel maken

  1. Voer de volgende opdracht uit om een map Modellen te maken:

    mkdir Models
    

    Selecteer de map Modellen in Visual Studio Code en voeg een nieuw bestand toe met de naam Pizza.cs.

    Schermopname van het toevoegen van een nieuw bestand aan de map Modellen in Visual Studio Code.

    De hoofdmap van het project bevat nu een Models map met een leeg Pizza.cs bestand. De naam van de map Models is een conventie. De mapnaam is afkomstig van de modelweergave-controllerarchitectuur die door de web-API wordt gebruikt.

  2. Voeg de volgende code toe aan Models/Pizza.cs uw wijzigingen en sla deze op. Deze klasse definieert een pizza.

    namespace ContosoPizza.Models;
    
    public class Pizza
    {
        public int Id { get; set; }
        public string? Name { get; set; }
        public bool IsGlutenFree { get; set; }
    }
    

Een gegevensservice toevoegen

  1. Voer de volgende opdracht uit om een servicesmap te maken:

    mkdir Services
    

    Selecteer de map in Visual Studio Code en voeg een nieuw bestand toe met de naam PizzaService.cs.

    Schermopname van Visual Studio Code met het toevoegen van een nieuw bestand aan de map Services.

  2. Voeg de volgende code toe aan Services/PizzaService.cs uw wijzigingen en sla deze op. Met deze code wordt een in-memory pizzagegevensservice gemaakt.

    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;
        }
    }
    

    Deze service biedt standaard een eenvoudige in-memory gegevenscacheservice met twee pizza's. Onze web-API maakt gebruik van die service voor demodoeleinden. Wanneer u de web-API stopt en start, wordt de gegevenscache in het geheugen opnieuw ingesteld op de twee standaard pizza's van de constructor van PizzaService.

Het web-API-project bouwen

Voer de volgende opdracht uit om de app te bouwen:

dotnet build

Het bouwen hoort zonder waarschuwingen te lukken. Als het bouwen mislukt, controleert u de uitvoer op probleemoplossingsinformatie.

In de volgende les maakt u een controller die gebruikmaakt van het model en PizzaService de Pizza klasse.