Упражнение. Добавление хранилища данных
Прежде чем создавать веб-API для управления пиццами, вам нужно создать хранилище данных, в котором будут выполняться эти операции.
Вам нужен model
класс, чтобы представить пиццу в инвентаризации. Модель содержит свойства, которые представляют характеристики продукта. Модель используется для передачи данных в веб-API и для сохранения сведений о пиццах в хранилище данных.
В этом уроке роль хранилища данных выполнит простейшая локальная службой кэширования в памяти. В реальном приложении вы можете использовать базу данных, например SQL Server, с Entity Framework Core.
Создание модели пиццы
Выполните приведенную ниже команду для создания папки Models.
mkdir Models
Выберите папку Models в Visual Studio Code и добавьте новый файл с именем Pizza.cs.
Корневой каталог проекта теперь содержит каталог Models с пустым файлом Pizza.cs. Имя каталога Models выбрано по соглашению. Имя каталога унаследовано от архитектуры "Модель — представление — контроллер", которую использует веб-API.
Добавьте следующий код в Models/Pizza.cs и сохраните изменения. Этот класс определяет пиццу.
namespace ContosoPizza.Models; public class Pizza { public int Id { get; set; } public string? Name { get; set; } public bool IsGlutenFree { get; set; } }
Добавление службы данных
Выполните приведенную ниже команду, чтобы создать папку Services:
mkdir Services
Выберите эту папку в Visual Studio Code и добавьте в нее новый файл с именем PizzaService.cs.
Добавьте следующий код в Services/PizzaService.cs и сохраните изменения. Этот код создает службу данных пиццы в памяти.
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; } }
Эта служба предоставляет простую службу кэширования данных в памяти, где по умолчанию сохранены две пиццы. Наш веб-API использует такую службу для демонстрационных целей. При остановке и запуске веб-API кэш данных в памяти сбрасывается на две пиццы по умолчанию из конструктора
PizzaService
.
Создание проекта веб-API
Выполните сборку приложения с помощью следующей команды:
dotnet build
Сборка должна пройти успешно без предупреждений. В случае сбоя сборки просмотрите выходные данные, содержащие сведения по устранению неполадок.
В следующем уроке вы создадите контроллер, который будет использовать модель Pizza
и класс PizzaService
.