Exercício: adicionar um arquivo de dados
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 transferir dados através da API Web e para armazenar 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
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.
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 modelo-visão-controlador que a API da Web usa.
Adicione o seguinte código a Models/Pizza.cs e salve as 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
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.
Adicione o seguinte código a Services/PizzaService.cs e salve as suas alterações. Este código cria um serviço de dados de pizza em 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 Web, o cache de dados na memória é redefinido para as duas pizzas padrão configuradas pelo 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 alertas. Se a compilação falhar, verifique o resultado para obter informações de diagnóstico.
Na próxima unidade, criarás um controlador que usará o modelo Pizza
e a classe PizzaService
.