Esercizio: Aggiungere un archivio dati

Completato

Prima di iniziare a implementare l'API Web per la pizza, è necessario avere un archivio dati su cui è possibile eseguire operazioni.

Deve essere presente una classe model per rappresentare una pizza nell'inventario. Il modello contiene proprietà che rappresentano le caratteristiche di una pizza. Il modello viene usato per passare i dati nell'API Web e per salvare in modo permanente le opzioni per la pizza nell'archivio dati.

In questa unità, tale archivio dati sarà un semplice servizio di memorizzazione nella cache in memoria locale. In un'applicazione reale è consigliabile usare un database, ad esempio SQL Server, con Entity Framework Core.

Creare un modello di pizza

  1. Eseguire il comando seguente per creare una cartella Models:

    mkdir Models
    

    Selezionare la cartella Models in Visual Studio Code e aggiungere un nuovo file denominato Pizza.cs.

    Screenshot relativo all'aggiunta di un nuovo file alla cartella Models in Visual Studio Code.

    La radice del progetto contiene ora una directory Models con un file Pizza.cs vuoto. Il nome di directory Models è una convenzione. Il nome della directory deriva dall'architettura Model-View-Controller usata dall'API Web.

  2. Aggiungere il codice seguente a Models/Pizza.cs e salvare le modifiche. Questa classe definisce una pizza.

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

Aggiungere un servizio dati

  1. Eseguire il comando seguente per creare una cartella Services:

    mkdir Services
    

    Selezionare la cartella in Visual Studio Code e aggiungere un nuovo file denominato PizzaService.cs.

    Screenshot di Visual Studio Code che mostra l'aggiunta di un nuovo file alla cartella Services.

  2. Aggiungere il codice seguente a Services/PizzaService.cs e salvare le modifiche. Questo codice crea un servizio dati pizza in memoria.

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

    Questo servizio fornisce un semplice servizio di memorizzazione nella cache dei dati in memoria con due pizze per impostazione predefinita La nostra API Web userà questo servizio a scopo dimostrativo. Quando si arresta e si avvia l'API Web, la cache dei dati in memoria verrà reimpostata sulle due pizze predefinite del costruttore del servizio PizzaService.

Compilare il progetto di API Web

Eseguire il comando seguente per compilare l'app:

dotnet build

La compilazione ha esito positivo senza avvisi. Se la compilazione non riesce, controllare l'output per informazioni sulla risoluzione dei problemi.

Nell'unità successiva si creerà un controller che userà il modello Pizza e la classe PizzaService.