练习 – 添加数据存储

在开始为披萨实现 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; }
}

提示

以下键盘快捷键在 Azure Cloud Shell 编辑器中非常有用。

键盘快捷方式命令
Ctrl+V (Windows)
⌘+V (macOS)
粘贴
Ctrl+S (Windows)
⌘+S (macOS)
保存

添加数据服务

运行以下命令以创建 Services 文件夹:Bash复制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 项目

运行以下命令以生成应用:

.NET CLI复制

dotnet build

生成成功,且没有任何警告。 如果生成失败,请检查输出以获取故障排除信息。

在下一个单元中,你将创建一个使用 Pizza 模型和 PizzaService 类的控制器。

给TA打赏
共{{data.count}}人
人已打赏
.Net Core

ASP.NET Core Web API 控制器

2022-8-12 14:53:40

.Net Core

练习 - 添加控制器

2022-8-12 16:24:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索