Ejercicio: Adición de un almacén de datos
Antes de empezar a implementar la API web de pizzas, es necesario tener un almacén de datos en el que poder realizar operaciones.
Se necesita una clase model para representar una pizza del inventario. El modelo contiene propiedades que representan las características de una pizza. El modelo se usa para pasar datos en la API web y para conservar opciones de pizza en el almacén de datos. En esta unidad, ese almacén de datos va a ser un servicio de almacenamiento en caché en memoria local simple. En una aplicación real se recomienda usar una base de datos, como SQL Server, con Entity Framework Core.
Creación de un modelo de pizza
Ejecute el comando siguiente para crear una carpeta
Models:mkdir ModelsSeleccione la carpeta
Modelsen Visual Studio Code y agregue un nuevo archivo de nombrePizza.cs.
La raíz del proyecto ahora contiene un directorio Models con un archivo Pizza.cs vacío. El nombre del directorio Models es una convención. El nombre del directorio procede de la arquitectura Modelo-Vista-Controlador que usa la API web.
Agregue el código siguiente a Models/Pizza.cs para definir una pizza. Guarde los cambios.
namespace ContosoPizza.Models { public class Pizza { public int Id { get; set; } public string Name { get; set; } public bool IsGlutenFree { get; set; } } }Sugerencia
Los métodos abreviados de teclado siguientes son útiles en el editor de Cloud Shell.
Método abreviado de teclado Comando CTRL+V (Windows)
⌘+V (macOS)Pegar CTRL+S (Windows)
⌘+S (macOS)Guardar
Incorporación de un servicio de datos
Ejecute el comando siguiente para crear una carpeta
Services:mkdir ServicesSeleccione la carpeta en Visual Studio Code y agregue un nuevo archivo de nombre
PizzaService.cs.
Agregue el código siguiente a Services/PizzaService.cs para crear un servicio de datos de pizzas en memoria. Guarde los cambios.
using ContosoPizza.Models; using System.Collections.Generic; using System.Linq; 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 es un sencillo servicio de almacenamiento en caché de datos en memoria con dos pizzas de manera predeterminada que la API web va a usar con fines de demostración. Cuando se detiene y se inicia la API web, la caché de datos en memoria se restablece a las dos pizzas predeterminadas del creador de
PizzaService.
Compilación del proyecto de API web
Ejecute el siguiente comando para compilar la aplicación:
dotnet build
La compilación se ejecuta correctamente sin advertencias. Si se produce un error en la compilación, compruebe la salida con el fin de obtener información para solucionar problemas.
El controlador que creará en la siguiente unidad usará el modelo Pizza y la clase PizzaService.
¿Necesita ayuda? Consulte nuestra guía de solución de problemas o notifique un problema para enviar comentarios específicos.