Exercici: Addició d'un magatzem de dades

Abans de començar a implementar una API web per a pizzes, cal tenir un magatzem de dades on pot realitzar operacions.

Necessita una classe modelper representar una pizza a l'inventari. El model conté propietats que representen les característiques duna pizza. El model es fa servir per passar dades a l'API web i per conservar opcions de pizza al magatzem de dades.

En aquesta unitat, aquest magatzem de dades és un servei d'emmagatzematge de memòria cau en memòria local simple. En una aplicació real es considera l'ús d'una base de dades, com ara SQL Server, amb Entity Framework Core.

Creació d´un model de pizza

  1. Executeu la següent ordre per crear una carpeta Models :

    Bash
    mkdir Models
    

    Seleccioneu la carpeta Models al Visual Studio Code i afegiu un fitxer de nom Pizza.cs nou .

    Captura de pantalla d'afegir un fitxer nou a la carpeta Models a Visual Studio Code.

    L'arrel del projecte ara conté un directori Models amb un fitxer Pizza.cs buit. El nom del directori Models és una convenció. El nom del directori procedeix de l'arquitectura Model-Vista- Controlador que utilitza l'API web.

  2. Afegiu el codi següent a Models/Pizza.cs i deseu els canvis. Aquesta classe defineix una pizza.

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

Incorporació d'un servei de dades

  1. Executeu l'ordre següent per crear una carpeta Services .

    Bash
    mkdir Services
    

    Seleccioneu la carpeta al Visual Studio Code i afegiu un nou fitxer de nom PizzaService.cs .

    Captura de pantalla de Visual Studio Code que mostra l'addició d'un fitxer nou a la carpeta Serveis.

  2. Afegiu el codi següent a Services/PizzaService.cs i deseu els canvis. Aquest codi crea un servei de dades de pizza en memòria.

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

    Aquest servei proporciona un servei senzill d'emmagatzematge en memòria cau de dades en memòria amb dues pizzes per defecte. La nostra API web utilitza aquest servei amb fins de demostració. Quan s'atura i s'inicia l'API web, la memòria cau de dades en memòria es restableix a les dues pizzes predeterminades del constructor de PizzaService.

Compilació del projecte d'API web

Executeu l'ordre següent per compilar l'aplicació:

CLI de .NET
dotnet build

La compilació s'executa correctament sense advertiments. Si es produeix un error a la compilació, comproveu la sortida per obtenir informació per solucionar problemes.

A la unitat següent, creareu un controlador que utilitzarà el model Pizzai la classe PizzaService.


Mòdul completat:

Següent