Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

Visual Studio 2022の機能でWeb API開発を効率化しよう

こんにちは、MLBお兄さんこと松村です。
MLB では早くもオールスターゲームに出場する選手を決める投票が始まっています。
みなさんもお気に入りの選手や今季ブレイクした選手に投票してみてはいかがでしょうか。


さて、私は先日こちらのイベントで登壇しました。

dotnet-communities.connpass.com

そのときの資料は既に公開しているので、ぜひご覧ください。

speakerdeck.com


今回の登壇では ASP.NET Core Web API と Visual Studio 2022 についての、こちらの記事を元ネタにしましたので、取り上げた内容を解説したいと思います。

devblogs.microsoft.com

また、これらの Visual Studio の機能の内容は Build のセッションでも言及されていました。あわせてご覧ください。

build.microsoft.com

Minimal API でプロジェクト作成

ASP.NET Core Web API のプロジェクトを作成する際、 ApiController か Minimal API のどちらを用いるか選択します。

どちらを選ぶべきかは状況によりけりで一概には言えません。
今回は Minimal API を使用するため、「コントローラーを使用する」のチェックは外します。

また OpenAPI (Swagger) を使用するため、「OpenAPI サポートを有効にする」のチェックを入れます。
Minimal API プロジェクトを作成すると、OpenAPI の設定も含まれており、Swagger UI が使用可能です。

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSwaggerGen();

var app = builder.Build();
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

また、サンプルの天気予報のエンドポイントも作られます。

app.MapGet("/weatherforecast", () =>
{
    var forecast = Enumerable.Range(1, 5).Select(index =>
        new WeatherForecast
        (
            DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
            Random.Shared.Next(-20, 55),
            summaries[Random.Shared.Next(summaries.Length)]
        ))
        .ToArray();
    return forecast;
})
.WithName("GetWeatherForecast")
.WithOpenApi();

スキャフォールドで API 作成

新しい機能ではないですが、Visual Studio ではモデルからスキャフォールドで Web API を作成することができます。
エンドポイントのリソースとなるモデルを作成したうえで、Visual Studio からスキャフォールドを行います。

マイグレーションファイルの作成

基本的には dotnet ef コマンドを使う派ですが、Visual Studio の GUI でもマイグレーションファイルの作成や適用ができるようになっていました。直感的で分かりやすいです。

Web API エンドポイントエクスプローラー

Visual Studio ではプレビュー機能のオン/オフを切り替えることができます。

learn.microsoft.com

そのなかに「Web API エンドポイントエクスプローラー」という項目があるので、それをオンにすると Web API エンドポイントエクスプローラーを利用することができるようになります。
このエクスプローラーには、表示中のプロジェクトに定義されている Web API エンドポイントが一覧表示されます。

一覧に表示された項目を右クリックすると、そのエンドポイントが定義されているファイルにジャンプすることができます。
エンドポイントの数が多くなると、このような一覧性も大事になってきますね。

REST API クライアント

上記のように、Web API エンドポイントエクスプローラーに表示される項目の右クリックメニューにある「要求の生成」を押すと、エディターに .http 拡張子のファイルが表示されます。(.rest 拡張子でも同様)
これは Visual Studio における REST クライアントのファイルです。

@VS2022WebApiDevelopment_HostAddress = https://localhost:7061

GET {{VS2022WebApiDevelopment_HostAddress}}/weatherforecast

.http ファイルには上記のように、リクエスト先のエンドポイントと HTTP メソッドが記載されます。
この状態で ▶ ボタンを押すと、そのエンドポイントに HTTP リクエストを送信し、 API をテストすることができます。

ちなみに Visual Studio Code でも、REST クライアントの拡張機能をインストールすることで同様の操作を行えます。

この .http ファイルをリポジトリに含めておけば、Postman コレクションを作成せずとも、メンバー間で API のテスト内容を共有することができます。

Visual Studio の開発トンネル

例えば LINE ボット用の Web API エンドポイントを作る際、実際の LINE アプリからローカルのエンドポイントに通信し、デバッグを行いたい場合があります。
おそらく多くの方は ngrok を使うかと思いますが、Visual Studio なら標準機能でローカルへのポートトンネリングを行うことができます。

learn.microsoft.com

開発トンネルはアカウントに紐づくようになっており、一時的または永続的な URL を発行することができます。
また、URL にはアクセス制御を設定することができ、自分のみ、自組織内(組織アカウント限定)、誰でもOK、という種類に分かれます。


知らない間に Visual Studio 2022 で Web API 開発がやりやすくなったな~という印象です。
こういう新機能をどんどん使って、より効率的な開発をやりたいですね。

www.alterbooth.com

www.alterbooth.com

cloudpointer.tech