练习 - 添加数据存储
在开始为披萨实现 Web API 之前,需要添加一个数据存储供你执行操作。
你需要一个 model
类来表示库存中的披萨。 模型包含用于表示披萨特征的属性。 模型用于在 Web API 中传递数据,以及在数据存储中保存披萨选项。
在本单元中,该数据存储是一个简单的本地内存中缓存服务。 在实际应用程序中,可以考虑将数据库(例如 SQL Server)与 Entity Framework Core 结合使用。
创建披萨模型
运行以下命令以创建 Models 文件夹:
mkdir Models
在 Visual Studio Code 中选择 Models 文件夹,并添加名为 Pizza.cs 的新文件。
项目根目录现在包含一个带有空 Pizza.cs 文件的 Models 目录。 目录名称 Models 是一种约定。 目录名称来自 Web API 使用的模型-视图-控制器体系结构。
将以下代码添加到Models/Pizza.cs并保存所做的更改。 此类定义披萨。
namespace ContosoPizza.Models; public class Pizza { public int Id { get; set; } public string? Name { get; set; } public bool IsGlutenFree { get; set; } }
添加数据服务
运行以下命令以创建 Services 文件夹:
mkdir Services
在 Visual Studio Code 中选择该文件夹,并添加名为 PizzaService.cs 的新文件。
将以下代码添加到Services/PizzaService.cs并保存所做的更改。 此代码创建内存中披萨数据服务。
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; } }
默认情况下,此服务提供一个简单的内存中数据缓存服务,其中包含两个披萨。 我们的 Web API 使用该服务进行演示。 如果先停止再启动 Web API,内存中数据缓存会重置为
PizzaService
的构造函数中的两个默认披萨。
生成 Web API 项目
运行以下命令以生成应用:
dotnet build
生成成功,且没有任何警告。 如果生成失败,请检查输出以获取故障排除信息。
在下一个单元中,你将创建一个使用 Pizza
模型和 PizzaService
类的控制器。