Ćwiczenie — dodawanie magazynu danych

Ukończone

Przed rozpoczęciem implementowania internetowego interfejsu API dla pizzy musisz mieć magazyn danych, w którym można wykonywać operacje.

Potrzebujesz model klasy do reprezentowania pizzy w spisie. Model zawiera właściwości reprezentujące cechy pizzy. Model służy do przekazywania danych w internetowym interfejsie API i utrwalania opcji pizzy w magazynie danych.

W tej lekcji magazyn danych jest prostą lokalną usługą buforowania w pamięci. W rzeczywistej aplikacji rozważ użycie bazy danych, takiej jak SQL Server, z platformą Entity Framework Core.

Tworzenie modelu pizzy

  1. Uruchom następujące polecenie, aby utworzyć folder Models :

    mkdir Models
    

    Wybierz folder Models w programie Visual Studio Code i dodaj nowy plik o nazwie Pizza.cs.

    Zrzut ekranu przedstawiający dodawanie nowego pliku do folderu Models w programie Visual Studio Code.

    Katalog główny projektu zawiera Models teraz katalog z pustym Pizza.cs plikiem. Nazwa katalogu Models to konwencja. Nazwa katalogu pochodzi z architektury kontrolera widoku modelu używanej przez internetowy interfejs API.

  2. Dodaj następujący kod i Models/Pizza.cs zapisz zmiany. Ta klasa definiuje pizzę.

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

Dodawanie usługi danych

  1. Uruchom następujące polecenie, aby utworzyć folder Usługi :

    mkdir Services
    

    Wybierz folder w programie Visual Studio Code i dodaj nowy plik o nazwie PizzaService.cs.

    Zrzut ekranu programu Visual Studio Code przedstawiający dodawanie nowego pliku do folderu Usługi.

  2. Dodaj następujący kod i Services/PizzaService.cs zapisz zmiany. Ten kod tworzy usługę danych pizzy w pamięci.

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

    Ta usługa domyślnie udostępnia prostą usługę buforowania danych w pamięci z dwiema pizzami. Nasz internetowy interfejs API używa tej usługi do celów demonstracyjnych. Po zatrzymaniu i uruchomieniu internetowego interfejsu API pamięć podręczna danych w pamięci zostanie zresetowana do dwóch domyślnych pizz z konstruktora PizzaServiceprogramu .

Kompilowanie projektu internetowego interfejsu API

Uruchom następujące polecenie, aby skompilować aplikację:

dotnet build

Kompilacja zakończy się pomyślnie bez ostrzeżeń. Jeśli kompilacja zakończy się niepowodzeniem, sprawdź dane wyjściowe, aby uzyskać informacje dotyczące rozwiązywania problemów.

W następnej lekcji utworzysz kontroler, który będzie używać Pizza modelu i PizzaService klasy.