Exercício: adicionar um arquivo de dados

Concluído

Antes de começar a implementar uma API da Web para pizza, você precisa ter um armazenamento de dados no qual possa executar operações.

Você precisa de uma model classe para representar uma pizza em seu inventário. O modelo contém propriedades que representam as características de uma pizza. O modelo é usado para passar dados na API da Web e para persistir opções de pizza no armazenamento de dados.

Nesta unidade, esse armazenamento de dados é um simples serviço de cache na memória local. Em um aplicativo do mundo real, você consideraria usar um banco de dados, como o SQL Server, com o Entity Framework Core.

Criar um modelo de pizza

  1. Execute o seguinte comando para criar uma pasta Models :

    mkdir Models
    

    Selecione a pasta Modelos no Visual Studio Code e adicione um novo arquivo chamado Pizza.cs.

    Captura de tela da adição de um novo arquivo à pasta Modelos no Visual Studio Code.

    A raiz do projeto agora contém um Models diretório com um arquivo vazio Pizza.cs . O nome de diretório Models é uma convenção. O nome do diretório vem da arquitetura model-view-controller que a API da Web usa.

  2. Adicione o seguinte código e Models/Pizza.cs salve suas alterações. Esta classe define uma pizza.

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

Adicionar um serviço de dados

  1. Execute o seguinte comando para criar uma pasta Serviços :

    mkdir Services
    

    Selecione a pasta no Visual Studio Code e adicione um novo arquivo chamado PizzaService.cs.

    Captura de tela do Visual Studio Code que mostra a adição de um novo arquivo à pasta Serviços.

  2. Adicione o seguinte código e Services/PizzaService.cs salve suas alterações. Este código cria um serviço de dados pizza na memória.

    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;
        }
    }
    

    Este serviço fornece um serviço simples de cache de dados na memória com duas pizzas por padrão. Nossa API da Web usa esse serviço para fins de demonstração. Quando você para e inicia a API da Web, o cache de dados na memória é redefinido para as duas pizzas padrão do construtor do PizzaService.

Crie o projeto de API da Web

Execute o seguinte comando para criar a aplicação:

dotnet build

A compilação tem êxito sem avisos. Se a compilação falhar, verifique a saída de informações sobre a resolução de problemas.

Na próxima unidade, você criará um controlador que usará o modelo e PizzaService a Pizza classe.