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 アカウントが必要です。
- Azure アカウントをお持ちでない場合は、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 ルーティングを変更する
WeatherForecastController
の Get
アクションにアクセスするために必要な URL 構造を変更します。 次の手順のようにします。
WeatherForecastController.cs
ファイルを開きます。クラスレベルの属性
[Route("[controller]")]
を[Route("/")]
に置き換えます。 更新したクラス定義は次のようになります。[ApiController] [Route("/")] public class WeatherForecastController : ControllerBase
Azure App Service に Web API を発行する
ASP.NET Core Web API を Azure API Management に発行するには、次の手順のようにします。
- API アプリを Azure App Service に発行します。
- ASP.NET Core Web API アプリを Azure API Management サービス インスタンスに発行します。
API アプリを Azure App Service に発行する
ASP.NET Core Web API を Azure API Management に発行するには、次の手順のようにします。
ソリューション エクスプローラーで、プロジェクトを右クリックし、 [発行] を選択します。
[発行] ダイアログで [Azure] を選択し、[次へ] ボタンを選択します。
[Azure App Service (Windows)] を選択し、[次へ] ボタンを選択します。
[新しい Azure App Service の作成] を選択します。
[App Service の作成] ダイアログが表示されます。 [アプリ名] 、 [リソース グループ] 、 [App Service プラン] の各入力フィールドに値が設定されます。 これらの名前を保持することも、変更することもできます。
[作成] ボタンを選択します。
アプリ サービスが作成されたら、[次へ] ボタンを選択します。
[Create a new API Management Service] (新しい API Management サービスを作成する) を選択します。
[Create API Management Service] (API Management サービスの作成) ダイアログが表示されます。 [API 名]、[サブスクリプション名]、[リソース グループ] の各エントリ フィールドはそのままにしておくことができます。 [API Management サービス] エントリの横にある [new] (新規) ボタンを選択し、そのダイアログ ボックスから必須フィールドを入力します。
[OK] ボタンを選択して、API Management サービスを作成します。
[作成] ボタンを選択して、API Management サービスの作成に進みます。 この手順は、完了するまでに数分かかることがあります。
完了したら、[完了] ボタンを選択します。
ダイアログが閉じ、発行に関する情報が含まれる概要画面が表示されます。 [発行] ボタンを選びます。
Web API は、Azure App Service と Azure API Management の両方に発行されます。 新しいブラウザー ウィンドウが表示され、Azure App Service で実行されている API が示されます。 そのウィンドウは閉じてもかまいません。
Web ブラウザーで Azure portal を開き、作成した API Management インスタンスに移動します。
左側のメニューから [API] オプションを選択します。
前の手順で作成した API を選択します。 内容が設定されているので、調べることができます。
発行された API の名前を構成する
API の名前は WeatherAPI であることがわかります。ただし、ここでは Weather Forecasts という名前にする必要があります。 名前を更新するには、次の手順を実行します。
以下の内容を、
Program.cs
のservies.AddSwaggerGen();
の直後に追加しますbuilder.Services.ConfigureSwaggerGen(setup => { setup.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "Weather Forecasts", Version = "v1" }); });
ASP.NET Core Web API を再発行し、Azure portal で Azure API Management インスタンスを開きます。
ブラウザーでページを更新します。 API の名前が正しくなったことがわかります。
Web API が動作していることを確認する
次の手順のようにして、Azure API Management にデプロイされた ASP.NET Core Web API を Azure portal からテストできます。
- [テスト] タブを開きます。
- / または Get 操作を選択します。
- [Send] を選択します。
クリーンアップ
アプリのテストが完了したら、Azure portal に移動して、アプリを削除します。
[リソース グループ] を選択し、作成したリソース グループを選択します。
[リソース グループ] ページで、 [削除] を選択します。
リソース グループ名を入力し、 [削除] を選択します。 このチュートリアルで作成されたアプリとその他すべてのリソースが Azure から削除されます。
その他の技術情報
ASP.NET Core