Übung: Hinzufügen eines Datenspeichers
Bevor Sie mit der Implementierung einer Web-API zum Verwalten von Pizzas beginnen, benötigen Sie einen Datenspeicher, in dem Sie Vorgänge ausführen können.
Sie benötigen eine model
-Klasse, um eine Pizza im Bestand darzustellen. Das Modell enthält Eigenschaften, die die Merkmale einer Pizza darstellen. Das Modell dient zur Übergabe von Daten an die Web-API und zum persistenten Speichern von Pizzaoptionen in einem Datenspeicher.
In dieser Lerneinheit ist dieser Datenspeicher ein einfacher lokaler In-Memory-Cachedienst. In einer realen Anwendung sollten Sie erwägen, eine Datenbank, z. B. SQL Server, mit Entity Framework Core einzusetzen.
Erstellen eines Pizzamodells
Führen Sie den folgenden Befehl aus, um einen Ordner Models zu erstellen:
mkdir Models
Wählen Sie den Ordner Models in Visual Studio Code aus, und fügen Sie eine neue Datei namens Pizza.cs hinzu.
Das Projektstammverzeichnis enthält jetzt das Verzeichnis Models mit der leeren Datei Pizza.cs. Der Verzeichnisname Models entspricht einer Konvention. Der Verzeichnisname stammt aus der MVC-Architektur (Model-View-Controller), die von der Web-API verwendet wird.
Fügen Sie folgenden Code zu Models/Pizza.cs hinzu, und speichern Sie die Änderungen. Diese Klasse definiert eine Pizza.
namespace ContosoPizza.Models; public class Pizza { public int Id { get; set; } public string? Name { get; set; } public bool IsGlutenFree { get; set; } }
Hinzufügen eines Datendiensts
Führen Sie den folgenden Befehl aus, um einen Ordner Services zu erstellen:
mkdir Services
Wählen Sie den Ordner in Visual Studio Code aus, und fügen Sie eine neue Datei namens PizzaService.cs hinzu.
Fügen Sie folgenden Code zu Services/PizzaService.cs hinzu, und speichern Sie die Änderungen. Dieser Code erstellt einen In-Memory-Pizza-Datendienst.
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; } }
Dieser Dienst bietet standardmäßig einen einfachen In-Memory-Cachedienst mit zwei Pizzas. Unsere Web-API verwendet diesen Dienst zu Demonstrationszwecken. Wenn Sie die Web-API beenden und starten, wird der In-Memory-Datencache vom Konstruktor von
PizzaService
auf die beiden Standardpizzas zurückgesetzt.
Erstellen des Web-API-Projekts
Führen Sie den folgenden Befehl aus, um die App zu erstellen:
dotnet build
Der Buildvorgang sollte erfolgreich und ohne Warnungen abgeschlossen werden. Wenn beim Buildvorgang ein Fehler auftritt, suchen Sie in der Ausgabe nach Informationen zur Problembehandlung.
In der nächsten Lerneinheit erstellen Sie einen Controller, der das Pizza
-Modell und die PizzaService
-Klasse verwendet.