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 Models
Visual Studio Code'da Models klasörünü seçin ve Pizza.cs adlı yeni bir dosya ekleyin.
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.
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 Services
Visual 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 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
PizzaService
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 ünitede modeli ve PizzaService
sınıfı kullanacak Pizza
bir denetleyici oluşturacaksınız.