Övning – Lägga till ett datalager
Innan du börjar implementera ett webb-API för pizza måste du ha ett datalager där du kan utföra åtgärder.
Du behöver en model
klass för att representera en pizza i ditt lager. Modellen innehåller egenskaper som representerar egenskaperna hos en pizza. Modellen används för att skicka data i webb-API:et och för att bevara pizzaalternativ i datalagret.
I den här lektionen är datalagret en enkel lokal minnesintern cachelagringstjänst. I ett verkligt program kan du överväga att använda en databas, till exempel SQL Server, med Entity Framework Core.
Skapa en pizzamodell
Kör följande kommando för att skapa en modellmapp :
mkdir Models
Välj mappen Modeller i Visual Studio Code och lägg till en ny fil med namnet Pizza.cs.
Projektroten innehåller nu en Models katalog med en tom Pizza.cs fil. Katalognamnet Models är en konvention. Katalognamnet kommer från arkitekturen model-view-controller som webb-API:et använder.
Lägg till följande kod i Models/Pizza.cs och spara ändringarna. Den här klassen definierar en pizza.
namespace ContosoPizza.Models; public class Pizza { public int Id { get; set; } public string? Name { get; set; } public bool IsGlutenFree { get; set; } }
Lägga till en datatjänst
Kör följande kommando för att skapa en tjänstmapp :
mkdir Services
Välj mappen i Visual Studio Code och lägg till en ny fil med namnet PizzaService.cs.
Lägg till följande kod i Services/PizzaService.cs och spara ändringarna. Den här koden skapar en minnesintern pizzadatatjänst.
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; } }
Den här tjänsten tillhandahåller en enkel minnesintern datacachelagringstjänst med två pizzor som standard. Vårt webb-API använder den tjänsten i demosyfte. När du stoppar och startar webb-API:et återställs minnesintern datacachen till de två standardpizzorna från konstruktorn i
PizzaService
.
Skapa webb-API-projektet
Skapa appen genom att köra följande kommando:
dotnet build
Den bör skapas utan varningar. Om den inte skapas kontrollerar du felsökningsinformationen i utdata.
I nästa lektion skapar du en kontrollant som ska använda Pizza
modellen och PizzaService
klassen.