Gyakorlat – Adattár hozzáadása

Befejeződött

Mielőtt elkezdené a pizza webes API-jának implementálását, rendelkeznie kell egy adattárzal, amelyen műveleteket hajthat végre.

Szüksége van egy model osztályra, amely a pizzát képviseli a leltárában. A modell olyan tulajdonságokat tartalmaz, amelyek egy pizza jellemzőit képviselik. A modell arra szolgál, hogy adatokat továbbítson a webes API-ban, és megőrizze a pizzabeállításokat az adattárban.

Ebben a leckében ez az adattár egy egyszerű helyi memóriabeli gyorsítótárazási szolgáltatás. Egy valós alkalmazásban érdemes lehet adatbázist (például SQL Servert) használni az Entity Framework Core használatával.

Pizzamodell létrehozása

  1. Futtassa a következő parancsot a Models mappa létrehozásához:

    mkdir Models
    

    Válassza ki a Visual Studio Code Modellek mappáját, és adjon hozzá egy Pizza.cs nevű új fájlt.

    Képernyőkép új fájl hozzáadásáról a Visual Studio Code Modellek mappájába.

    A projektgyökér most egy Models üres Pizza.cs fájlt tartalmazó könyvtárat tartalmaz. A Models könyvtárnév egy konvenció. A címtár neve a webes API által használt modellnézet-vezérlő architektúrából származik.

  2. Adja hozzá a következő kódot, Models/Pizza.cs és mentse a módosításokat. Ez az osztály meghatároz egy pizzát.

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

Adatszolgáltatás hozzáadása

  1. Futtassa a következő parancsot egy Services-mappa létrehozásához:

    mkdir Services
    

    Jelölje ki a Mappát a Visual Studio Code-ban, és adjon hozzá egy új, PizzaService.cs nevű fájlt.

    Képernyőkép a Visual Studio Code-ról, amely egy új fájlt ad hozzá a Szolgáltatások mappához.

  2. Adja hozzá a következő kódot, Services/PizzaService.cs és mentse a módosításokat. Ez a kód létrehoz egy memóriabeli pizzaadat-szolgáltatást.

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

    Ez a szolgáltatás alapértelmezés szerint egy egyszerű memóriabeli adat-gyorsítótárazási szolgáltatást biztosít, „két pizza méretű” kapacitással. A webes API ezt a szolgáltatást demo célokra használja. Amikor leállítja, majd újraindítja a webes API-t, az in-memory adatgyorsítótár visszaáll a konstruktor két alapértelmezett pizzájára PizzaService.

A webes API-projekt létrehozása

Az alkalmazás felépítéséhez futtassa az alábbi parancsot:

dotnet build

A buildelés figyelmeztetések nélkül, sikeresen befejeződik. Ha a buildelés sikertelen, a kimenetben találhat hibaelhárítási információt.

A következő leckében létrehoz egy vezérlőt, amely a Pizza modellt és PizzaService osztályt fogja használni.