次の方法で共有


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

作成者: Matt Soucoup

このチュートリアルでは、Visual Studio を使用して ASP.NET Core Web API プロジェクトを作成し、OpenAPI がサポートされていることを確認してから、Azure App Service と Azure API Management の両方に Web 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 Management でアプリの 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 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
    

Web API を Azure App Service に発行する

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 の作成」ダイアログが表示されます。 アプリ名リソース グループ、および アプリ サービス プラン のエントリ フィールドが入力されています。 これらの名前は保持することも、変更することもできます。

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

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

  7. 新しい API Management サービスの作成を選択します。

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

    [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となっていることに注意してください。しかし、我々はそれを 天気予報と呼びたいと思います。 名前を更新するには、次の手順を実行します。

  1. services.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 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 から削除されます。

その他のリソース