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.

Envanterdeki pizzayı model temsil etmek için bir sınıfa ihtiyacınız var. 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.

    Screenshot of adding a new file to the Models folder in Visual Studio Code.

    Proje kökü artık boş Pizza.cs bir dosya içeren bir Models 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.

    Screenshot of Visual Studio Code that shows adding a new file to the Services folder.

  2. Aşağıdaki kodu öğesine Services/PizzaService.cs ekleyin ve değişikliklerinizi kaydedin. Bu kod bellek içi 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'sini durdurup başlattığınızda, bellek içi veri önbelleği oluşturucusundan PizzaServiceiki 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 ünitede modeli ve PizzaService sınıfı kullanacak Pizza bir denetleyici oluşturacaksınız.