在本练习中,你将在本地运行 ASP.NET Core 最小 API,并浏览该 API 和基础代码。 您还可以将 API 发布到 Azure 应用服务。
完成本练习后,您将能够
- 浏览记录的 API
- 确定 HTTP 操作的终结点
- 确定 HTTP 操作的 API 要求
- 将应用程序发布到 Azure 应用程序服务
先决条件
要完成本练习,您需要在系统中安装以下设备:
- Visual Studio Code
- 最新的 .NET 8.0 SDK
- Visual Studio Code 的 C# 扩展
- Visual Studio Code 的 Azure 资源扩展。
- Visual Studio Code 的 Azure 应用服务扩展。
- 具有活动订阅的 Azure 帐户。 如果你还没有,可在 https://azure.com/free 注册免费试用版。
预计练习完成时间:30 分钟
API 信息
API 与内存数据库交互,该数据库包含以下字段:
字段 | 类型 | 说明 |
---|---|---|
id |
integer | 数据密钥 |
name |
string | 水果名称 |
instock |
boolean | 表示水果是否有库存 |
Swagger 文档是使用 Swashbuckle 软件包创建的。
注意: 每次启动 API 时都会创建样本数据。
下载并运行水果 API 代码
在本部分,你将执行以下操作:
- 下载 API 代码
- 在本地运行 API
- 在浏览器中打开 API 文档
任务 1:下载 API 代码
-
右键单击以下链接并选择另存链接选项。
-
启动文件资源管理器并导航到文件保存的位置。
-
将文件解压缩到它自己的文件夹中。
任务 2:本地运行 API
-
启动 Visual Studio Code,在菜单栏中选择文件,然后选择打开文件夹……。
-
导航至解压项目文件的位置,选择 FruitAPI 文件夹。
-
浏览器窗格中的项目结构应与以下截图类似。 如果浏览器窗格不可见,请选择查看,然后在菜单栏中选择浏览器。
-
选择“终端”,然后选择“新建终端”,或使用键盘快捷方式 Ctrl+Shift+`,在 VS Code 中打开终端。
-
在终端窗格中运行以下
dotnet
命令:dotnet run
-
以下是在终端窗格中看到的输出示例。 请注意
Now listening on: http://localhost:5050
输出中的一行。 它标识了 API 的主机和端口。info: Microsoft.EntityFrameworkCore.Update[30100] Saved 3 entities to in-memory store. info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5050 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: <project location>
任务 3:在浏览器中打开 API 文档
-
要查看 API,可以输入
http://localhost:5050
地址栏,也可以按住 Ctrl+ 点击之前显示的终端中的Now listening on: http://localhost:5050
链接。 页面会显示找不到此 localhost 页面的信息。 -
在浏览器中用……添加 URL
/swagger
。/swagger
终结点通常是你能找到 Swagger API 文档的地方。 Swagger 文档的完整 URL 是http://localhost:5050/swagger
. 现在,您的浏览器应该会显示与以下截图类似的网页:
在 API 中执行操作
在本部分,你将执行以下操作:
- 对样本数据执行若干操作
- 确定操作的终结点和数据要求
任务 1:执行GET
操作
-
单击 GET 操作框中的任意位置,使用 Get all fruits 描述符展开 GET 操作。
-
探索操作的各个部分,并注意下表中显示的信息。
部分 说明 终结点 显示在操作标题中。 端点显示为 /fruits
. 完整 URI 是 API 的基本 URL,在我们的示例中附加了指定的终结点http://localhost:5050/fruits
。Parameters 此操作不需要。 媒体类型 指定操作将返回的媒体类型编码。 示例值 显示操作返回的数据模式。 请注意,此操作会返回一个 JSON 数组。 -
选择试用按钮,然后选择执行,运行操作。
-
操作的响应部分已更新为新信息。 请注意以下事项:
- 请求 URL:操作中访问的 URL。
- 服务器响应:显示操作的成功代码,响应正文显示三条样本记录。
任务 2:执行POST
操作
-
单击 POST 操作框中的任意位置,使用 Create a new fruit 描述符展开 POST 操作。
-
探索操作的各个部分,并注意下表中显示的信息。
部分 说明 终结点 终结点显示为 /fruits
。 完整 URI 是 API 的基本 URL,在我们的示例中附加了指定的终结点http://localhost:5050/fruits
。Parameters 此操作不需要。 请求正文 请求正文是必需的,因为 API 希望将数据添加到列表中,并且希望媒体类型为 .NET application/json
。示例值 显示 API 期望接收的数据模式。 -
要运行操作,请选择试用按钮。
-
将请求正文部分下输入框中的 JSON 替换为以下内容:
{ "id": 0, "name": "Pear", "instock": true }
注意: 添加数据时,数据库会分配自己的索引值,因此只需在
id
字段中有一个值即可。 -
操作的响应部分已更新为新信息。 请注意以下事项:
- 请求 URL:操作中访问的 URL。
- 服务器响应:显示操作的成功代码,响应正文显示添加到数据库的记录。
-
运行 Get all fruit 部分中的
GET
命令,注意现在包含 Pear 的记录。
任务 3:执行DELETE
操作
-
单击 DELETE 操作框中的任意位置,使用 Delete a fruit by Id 描述符展开 DELETE 操作。
-
探索操作的各个部分,并注意下表中显示的信息。
部分 说明 终结点 终结点显示为 /fruits/{id}
。 完整 URI 是 API 的基本 URL,并附加了指定的id
删除内容。 例如,http://localhost:5050/fruits/1
指向id
等于1
。Parameters 要求在请求 URL 中传递记录 id
。 -
要运行操作,请选择试用按钮。
-
在参数部分的
id
字段中输入一个1
,然后选择执行,即可删除样本数据中的Apple
记录。 -
操作的响应部分已更新为新信息。 请注意以下事项:
- 请求 URL:操作中访问的 URL。
- 响应正文:显示删除的记录。
- 代码:显示操作的成功代码。
-
运行 Get all fruits 部分中的
GET
命令,注意 Apple 的记录已删除。
准备好进入下一节练习时,请执行以下操作
- 关闭浏览器,并在运行水果 API 的终端中输入 Ctrl + C 停止该 API。
将 API 发布到 Azure 应用服务
在本部分,你将执行以下操作:
- 使用 Azure 资源扩展连接到 Azure
- 使用 Azure App 服务扩展将 API 发布到应用服务
任务 1:登录到 Azure
-
选择Azure 资源扩展打开面板。
-
选择登录到 Azure……
将打开一个浏览器窗口,提示您登录到 Azure 帐户。 完成登录后,可以关闭此窗口。
-
登录完成后,扩展将显示账户中可用订阅的列表。 下面的截图就是一个例子。
任务 2:创建新的网络应用程序
-
选择 Ctrl + Shift + P 打开命令面板,然后键入创建新 Web 应用程序过滤列表并选择 Azure 应用服务:创建新 Web 应用程序……(高级) 选项。
-
如果您的帐户有多个订阅,系统会提示您选择要用于部署的订阅。
-
为新 Web 应用输入全局唯一名称。 您可以尝试
fruitapi-<name>
用您的姓名或姓名首字母进行替换<name>
。 -
选择创建新资源组并接受默认值或输入
fruitapi-rg
。 -
选择 .NET 8 (LTS) 作为运行时栈。
-
操作系统选择 Linux
-
为新资源选择一个离您较近的位置。
-
选择创建新的应用服务计划并接受默认值或输入其他名称。
-
选择免费 (F1) 免费试用 Azure 的定价层级。
-
当提示需要新的 Application Insights 资源时,选择暂时跳过。
该工具将在 Azure 中创建必要的资源并编译代码。
任务 3:部署网络应用程序并浏览运行网站
-
资源创建和代码编译完成后,会弹出一个窗口提示您部署,请选择部署选项。
系统将构建代码的发布版本,并将其部署到之前创建的资源中。
-
部署完成后,会弹出一个新窗口,提示浏览网站,选择浏览网站。
-
在打开的浏览器窗口中,可能需要在 URL 结尾添加
/fruits
。 将看到 API 的原始输出,其中显示所有数据。备注: Swagger UI 已禁用,因为它仅针对开发环境启用。 除非执行其他配置,否则部署到 App 服务被视为非开发环境。
恭喜,您已成功将 API 部署到 Azure 应用服务。
注意:从 Azure 中删除不再需要的资源是一种好的做法。 可以通过删除之前在 Azure 门户中创建的资源组来删除本节练习中创建的所有资源。
审阅
在本练习中,你了解了如何:
- 浏览记录的 API
- 确定 HTTP 操作的终结点
- 确定 HTTP 操作的 API 要求
- 将应用程序发布到 Azure 应用程序服务