Упражнение. Добавление хранилища данных

Завершено

Прежде чем создавать веб-API для управления пиццами, вам нужно создать хранилище данных, в котором будут выполняться эти операции.

Вам потребуется класс model для представления запасов пиццы. Модель содержит свойства, которые представляют характеристики продукта. Модель используется для передачи данных в веб-API и для сохранения сведений о пиццах в хранилище данных.

В этом уроке роль хранилища данных выполнит простейшая локальная службой кэширования в памяти. В реальном приложении вы можете использовать базу данных, например SQL Server, с Entity Framework Core.

Создание модели пиццы

  1. Выполните приведенную ниже команду для создания папки Models.

    mkdir Models
    

    Выберите папку Models в Visual Studio Code и добавьте новый файл с именем Pizza.cs.

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

    Корневой каталог проекта теперь содержит каталог Models с пустым файлом Pizza.cs. Имя каталога Models выбрано по соглашению. Имя каталога унаследовано от архитектуры "Модель — представление — контроллер", которую использует веб-API.

  2. Добавьте следующий код в Models/Pizza.cs и сохраните изменения. Этот класс определяет пиццу.

    namespace ContosoPizza.Models;
    
    public class Pizza
    {
        public int Id { get; set; }
        public string? Name { get; set; }
        public bool IsGlutenFree { get; set; }
    }
    

Добавление службы данных

  1. Выполните приведенную ниже команду, чтобы создать папку Services:

    mkdir Services
    

    Выберите эту папку в Visual Studio Code и добавьте в нее новый файл с именем PizzaService.cs.

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

  2. Добавьте следующий код в 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.