Ć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 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
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.
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.
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
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.
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
PizzaService
programu .
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.