Ćwiczenie — dodawanie magazynu danych
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 interfejsie API i utrwalania opcji pizzy w bazie danych.
W tej jednostce 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
Uruchom następujące polecenie, aby utworzyć folder Models :
mkdir ModelsWybierz folder Models w programie Visual Studio Code i dodaj nowy plik o nazwie Pizza.cs.
Katalog główny teraz zawiera katalog Models z pustym plikiem Pizza.cs. Nazwa katalogu Models to konwencja. Nazwa katalogu pochodzi z architektury kontrolera widoku modelu używanej przez internetowy interfejs API.
Dodaj następujący kod do Models/Pizza.cs i 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
Uruchom następujące polecenie, aby utworzyć folder Usługi :
mkdir ServicesWybierz folder w programie Visual Studio Code i dodaj nowy plik o nazwie PizzaService.cs.
Dodaj następujący kod do Services/PizzaService.cs i 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 ponownym uruchomieniu web API, pamięć podręczna danych zostanie zresetowana do dwóch domyślnych pizz z konstruktora
PizzaService.
Utwórz projekt interfejsu API dla sieci
Uruchom następujące polecenie, aby skompilować aplikację:
dotnet build
Kompilowanie zakończyło 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.