Alıştırma - Veri deposu ekleme

Tamamlandı

Pizza için bir web API'sini uygulamaya başlamadan önce işlemleri gerçekleştirebileceğiniz bir veri deposuna sahip olmanız gerekir.

Envanterinizde pizzayı temsil eden bir sınıfa ihtiyacınız var model . Model, pizzanın özelliklerini temsil eden özellikler içerir. Model, web API'sindeki verileri geçirmek ve veri deposundaki pizza seçeneklerini kalıcı hale getirmek için kullanılır.

Bu ünitede bu veri deposu basit bir yerel bellek içi önbelleğe alma hizmetidir. Gerçek dünyadaki bir uygulamada, Entity Framework Core ile SQL Server gibi bir veritabanı kullanmayı göz önünde bulundurabilirsiniz.

Pizza modeli oluşturma

  1. Models klasörü oluşturmak için aşağıdaki komutu çalıştırın:

    mkdir Models
    

    Visual Studio Code'da Models klasörünü seçin ve Pizza.cs adlı yeni bir dosya ekleyin.

    Visual Studio Code'da Models klasörüne yeni dosya ekleme işleminin ekran görüntüsü.

    Proje kökü artık boş Models bir dosya içeren bir Pizza.cs dizin içeriyor. Dizin adının Models olması bir kuraldır. Dizin adı, web API'sinin kullandığı model-view-controller mimarisinden gelir.

  2. Aşağıdaki kodu öğesine Models/Pizza.cs ekleyin ve değişikliklerinizi kaydedin. Bu sınıf bir pizza tanımlar.

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

Veri hizmeti ekleme

  1. Hizmetler klasörü oluşturmak için aşağıdaki komutu çalıştırın:

    mkdir Services
    

    Visual Studio Code'da klasörü seçin ve PizzaService.cs adlı yeni bir dosya ekleyin.

    Hizmetler klasörüne yeni bir dosya eklemeyi gösteren Visual Studio Code'un ekran görüntüsü.

  2. Aşağıdaki kodu öğesine Services/PizzaService.cs ekleyin ve değişikliklerinizi kaydedin. Bu kod, bellekte çalışan bir pizza veri hizmeti oluşturur.

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

    Bu hizmet, varsayılan olarak iki pizza içeren basit bir bellek içi veri önbelleğe alma hizmeti sağlar. Web API'miz bu hizmeti tanıtım amacıyla kullanır. Web API'yi durdurup başlattığınızda, bellek içi veri önbelleği, PizzaService oluşturucusundaki iki varsayılan pizzaya sıfırlanır.

Web API'sini oluşturma projesi

Uygulamayı derlemek için aşağıdaki komutu çalıştırın:

dotnet build

Derleme hiç uyarı alınmadan başarılı olur. Derleme başarısız olursa, sorun giderme bilgileri için çıktıyı inceleyin.

Sonraki birimde Pizza modeli ve PizzaService sınıfını kullanacak bir denetleyici oluşturacaksınız.