Alıştırma - Veri deposu ekleme
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
Models klasörü oluşturmak için aşağıdaki komutu çalıştırın:
mkdir ModelsVisual Studio Code'da Models klasörünü seçin ve Pizza.cs adlı yeni bir dosya ekleyin.
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.
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
Hizmetler klasörü oluşturmak için aşağıdaki komutu çalıştırın:
mkdir ServicesVisual Studio Code'da klasörü seçin ve PizzaService.cs adlı yeni bir dosya ekleyin.
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,
PizzaServiceoluş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.