使用 Visual Studio 将 ASP.NET Core Web API 发布到 Azure API 管理

作者:Matt Soucoup

本教程介绍如何使用 Visual Studio 创建 ASP.NET Core Web API 项目,确保它具有 OpenAPI 支持,然后将 Web API 发布到 Azure 应用服务和 Azure API 管理。

设置

要完成本教程的步骤,你需要一个 Azure 帐户。

创建 ASP.NET Core Web API

使用 Visual Studio 可以从模板轻松地创建新的 ASP.NET Core Web API 项目。 请按照以下说明创建新的 ASP.NET Core Web API 项目:

  • 从“文件”菜单中选择“新建”>“项目”。
  • 在搜索框中输入“Web API”。
  • 选择“ASP.NET Core Web API”模板,然后选择“下一步”。
  • 在“配置新项目”对话框中,将项目命名为“WeatherAPI”,然后选择“下一步”。
  • 在“其他信息”对话框中:
  • 确认“框架”为“.NET 6.0 (长期支持)”。
  • 确认已选中“使用控制器(取消选中以使用最小 API)”复选框。
  • 确认已选中“启用 OpenAPI 支持”复选框。
  • 选择“创建”。

浏览代码

Swagger 定义允许 Azure API 管理读取应用的 API 定义。 通过在应用创建期间选中“启用 OpenAPI 支持”复选框,Visual Studio 会自动添加代码以创建 Swagger 定义。 打开显示以下代码的 Program.cs 文件:


...

builder.Services.AddSwaggerGen();

...

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI(); // Protected by if (env.IsDevelopment())
}

...

确保始终生成 Swagger 定义

无论应用程序的环境如何,Azure API 管理都需要始终存在 Swagger 定义。 为了确保始终生成这些定义,请将 app.UseSwagger(); 移出 if (app.Environment.IsDevelopment()) 块。

更新的代码:


...

app.UseSwagger();

if (app.Environment.IsDevelopment())
{
    app.UseSwaggerUI();
}

...

更改 API 路由

更改访问 WeatherForecastControllerGet 操作所需的 URL 结构。 完成以下步骤:

  1. 打开 WeatherForecastController.cs 文件。

  2. [Route("[controller]")] 类级别属性替换为 [Route("/")]。 更新后的类定义:

    [ApiController]
    [Route("/")]
    public class WeatherForecastController : ControllerBase
    

将 Web API 发布到 Azure 应用服务

完成以下步骤以将 ASP.NET Core Web API 发布到 Azure API 管理:

  1. 将 API 应用发布到 Azure 应用服务。
  2. 将 ASP.NET Core Web API 应用发布到 Azure API 管理服务实例。

将 API 应用发布到 Azure 应用服务

完成以下步骤以将 ASP.NET Core Web API 发布到 Azure API 管理:

  1. 在“解决方案资源管理器” 中,右键单击该项目并选择“发布”。

  2. 在“发布”对话框中,选择“Azure”,然后选择“下一步”按钮。

  3. 选择“Azure 应用服务(Windows)”,然后选择“下一步”按钮。

  4. 选择“创建新的 Azure 应用服务”。

    此时会显示“创建应用服务”对话框。 “应用名称”、“资源组”和“应用服务计划”输入字段已填充 。 可以保留这些名称,也可以进行更改。

  5. 选择“创建”按钮。

  6. 创建应用服务后,选择“下一步”按钮。

  7. 选择“创建新的 API 管理服务”。

    “创建 API 管理服务”对话框随即显示。 可以按原样保留“API 名称”、“订阅名称”和“资源组”条目字段。 选择“API 管理服务”条目旁边的“新建”按钮,然后从该对话框中输入必填字段。

    选择“确定”按钮以创建 API 管理服务。

  8. 选择“创建”按钮以继续创建 API 管理服务。 此步骤可能需要几分钟才能完成。

  9. 完成后,选择“完成”按钮。

  10. 该对话框关闭并显示一个摘要屏幕,提供有关发布的信息。 选择“发布”按钮。

    Web API 同时发布到 Azure 应用服务和 Azure API 管理。 将显示一个新的浏览器窗口,并显示在 Azure 应用服务中运行的 API。 可关闭该窗口。

  11. 在 Web 浏览器中打开 Azure 门户,并导航到创建的 API 管理实例。

  12. 从左侧菜单中选择“API”选项。

  13. 选择在前面步骤中创建的 API。 它现在已填充,你可以仔细浏览。

配置已发布的 API 名称

请注意 API 的名称为“WeatherAPI”;但是,我们希望将其称为“天气预报”。 完成以下步骤来更新该名称:

  1. servies.AddSwaggerGen(); 后面紧接着将以下内容添加到 Program.cs

    builder.Services.ConfigureSwaggerGen(setup =>
    {
        setup.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
        {
            Title = "Weather Forecasts",
            Version = "v1"
        });
    });
    
  2. 重新发布 ASP.NET Core Web API 并在 Azure 门户中打开 Azure API 管理实例。

  3. 在浏览器中刷新页面。 此时会显示 API 的名称是正确的。

验证 Web API 是否正常工作

可通过以下步骤从 Azure 门户的“Azure API 管理”中测试已部署的 ASP.NET Core Web API:

  1. 打开“测试”选项卡。
  2. 选择 / 或 Get 操作。
  3. 选择Send

知识巩固

完成应用测试后,转到 Azure 门户并删除该应用。

  1. 选择“资源组”,然后选择所创建的资源组。

  2. 在“资源组”页面中,选择“删除” 。

  3. 输入资源组的名称并选择“删除”。 现已从 Azure 中删除了本教程中创建的应用和其他所有资源。

其他资源