Visual Studio を使用して Azure API Management に ASP.NET Core Web API を発行する

作成者: Matt Soucoup

このチュートリアルでは、Visual Studio を使って ASP.NET Core Web API プロジェクトを作成し、OpenAPI がサポートされるようにして、Web API を Azure App Service と Azure API Management の両方に発行する方法について説明します。

設定

チュートリアルを完了するには、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 を使用する場合はオフにします)] のチェックボックスがオンになっていることを確認します。
  • [Enable OpenAPI support] (OpenAPI サポートを有効にする) のチェックボックスがオンになっていることを確認します。
  • [作成] を選択します

コードを調べる

Swagger 定義により、Azure API Management でアプリの API 定義を読み取ることができます。 アプリの作成時に [Enable OpenAPI support] (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 Management では、アプリケーションの環境に関係なく、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
    

Azure App Service に Web API を発行する

ASP.NET Core Web API を Azure API Management に発行するには、次の手順のようにします。

  1. API アプリを Azure App Service に発行します。
  2. ASP.NET Core Web API アプリを Azure API Management サービス インスタンスに発行します。

API アプリを Azure App Service に発行する

ASP.NET Core Web API を Azure API Management に発行するには、次の手順のようにします。

  1. ソリューション エクスプローラーで、プロジェクトを右クリックし、 [発行] を選択します。

  2. [発行] ダイアログで [Azure] を選択し、[次へ] ボタンを選択します。

  3. [Azure App Service (Windows)] を選択し、[次へ] ボタンを選択します。

  4. [新しい Azure App Service の作成] を選択します。

    [App Service の作成] ダイアログが表示されます。 [アプリ名][リソース グループ][App Service プラン] の各入力フィールドに値が設定されます。 これらの名前を保持することも、変更することもできます。

  5. [作成] ボタンを選択します。

  6. アプリ サービスが作成されたら、[次へ] ボタンを選択します。

  7. [Create a new API Management Service] (新しい API Management サービスを作成する) を選択します。

    [Create API Management Service] (API Management サービスの作成) ダイアログが表示されます。 [API 名][サブスクリプション名][リソース グループ] の各エントリ フィールドはそのままにしておくことができます。 [API Management サービス] エントリの横にある [new] (新規) ボタンを選択し、そのダイアログ ボックスから必須フィールドを入力します。

    [OK] ボタンを選択して、API Management サービスを作成します。

  8. [作成] ボタンを選択して、API Management サービスの作成に進みます。 この手順は、完了するまでに数分かかることがあります。

  9. 完了したら、[完了] ボタンを選択します。

  10. ダイアログが閉じ、発行に関する情報が含まれる概要画面が表示されます。 [発行] ボタンを選びます。

    Web API は、Azure App Service と Azure API Management の両方に発行されます。 新しいブラウザー ウィンドウが表示され、Azure App Service で実行されている API が示されます。 そのウィンドウは閉じてもかまいません。

  11. Web ブラウザーで Azure portal を開き、作成した API Management インスタンスに移動します。

  12. 左側のメニューから [API] オプションを選択します。

  13. 前の手順で作成した API を選択します。 内容が設定されているので、調べることができます。

発行された API の名前を構成する

API の名前は WeatherAPI であることがわかります。ただし、ここでは Weather Forecasts という名前にする必要があります。 名前を更新するには、次の手順を実行します。

  1. 以下の内容を、Program.csservies.AddSwaggerGen(); の直後に追加します

    builder.Services.ConfigureSwaggerGen(setup =>
    {
        setup.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
        {
            Title = "Weather Forecasts",
            Version = "v1"
        });
    });
    
  2. ASP.NET Core Web API を再発行し、Azure portal で Azure API Management インスタンスを開きます。

  3. ブラウザーでページを更新します。 API の名前が正しくなったことがわかります。

Web API が動作していることを確認する

次の手順のようにして、Azure API Management にデプロイされた ASP.NET Core Web API を Azure portal からテストできます。

  1. [テスト] タブを開きます。
  2. / または Get 操作を選択します。
  3. [Send] を選択します。

クリーンアップ

アプリのテストが完了したら、Azure portal に移動して、アプリを削除します。

  1. [リソース グループ] を選択し、作成したリソース グループを選択します。

  2. [リソース グループ] ページで、 [削除] を選択します。

  3. リソース グループ名を入力し、 [削除] を選択します。 このチュートリアルで作成されたアプリとその他すべてのリソースが Azure から削除されます。

その他の技術情報