👌

.NET 9のWeb APIテンプレートにSwagger UIを追加する

に公開

背景

OpenAPIドキュメントの生成にSwashbackleというコミュニティ対応のライブラリがこれまで使用されてきました。こちらは、OpenAPIドキュメントの生成およびSwagger UIについての機能がありました。
.NET 9以降ではMicrosoft.AspNetCore.OpenApiパッケージに置き換えられています。しかしながら、これにはOpenAPIドキュメント生成の機能はありますがSwagger UIの機能についてはありません。しかしながら、依然として手軽にテストしたいなどSwagger UIの需要はあるかと思います。

けど、Swagger UIのためだけに従来のSwashbackleを使い続けるという選択はよいものではありません。あくまでもSwagger UIは開発時のみ使うものですしSwashbackleに引きずられてせっかくOpenApiパッケージ側によい機能が実装されていたとしてもそれが使えないのではもったいないです。

Swagger UI追加手順

Nuget

「Swashbuckle.AspNetCore.SwaggerUI」をNugetします。

ソース追加

Program.cs
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.MapOpenApi();
    app.UseSwaggerUI(o => o.SwaggerEndpoint("/openapi/v1.json", "v1")); // 追加
}

例示ではMinimal APIのテンプレートからコメントに示した部分のみを追加しています。
Swashbackleの標準に比べてOpenAPIドキュメントの生成URIが変更になっているのでここだけ引数で渡してあげます。
通常通り、/swaggerにアクセスすると見慣れたSwagger UIが表示されます。

もちろん、通常通り実行してみることもできます。

Discussion