Упражнение. Добавление хранилища данных
Прежде чем создавать веб-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
.