ASP.NET CoreでWebAPIのデバッグをしていてSwaggerUIがすごい便利だったので適当なプロジェクトを作ってSwaggerUIを表示するところまでをやってみます。
nugetパッケージの準備
ASP.NET Core 3.1で適当なWebAPIのプロジェクトを作成します。nugetパッケージの管理からSwashbuckle.AspNetCoreをインストールします。
ミドルウェアの追加
Startup.csを少し変更します。 ConfigureServicesメソッドにservoce.AddSwaggerGen()を追加します。
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Sample APIs", Version = "v1" }); }); }
Configureメソッドにapp.UseSwagger()とapp.UseSwaggerUI()を追加します。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample APIs"); }); app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
launchUrlを変更する
デバッグ実行時に最初に呼ばれるAPIがデフォルトではwetherforecastというお天気情報APIになっているのでswaggerUIが表示されるように変更します。
swaggerUIの画面はhttp://localhost:{port}/swagger
で見ることができるので、プロジェクトのプロパティからデバッグ>ブラウザーの起動をwetherforecastからswaggerに変更します。
実行してみる
ここまでできたら実行してみます。こんな感じの画面が表示されるはずです。
デフォルトで用意されているWetherforecastControllerのアクションが1つ表示されています。アクションをクリックするとアコーディオンが展開されてTry it outからAPIを叩くことができ、 レスポンスも表示されます。
アクションを追加してみる
HttpGetのアクションだけだと味気ないので、HttpPostのアクションをWetherforecastControllerに追加してみます。
/// <summary> /// 更新します。 /// </summary> /// <param name="request">更新リクエスト</param> /// <returns></returns> [HttpPost] public IActionResult Update([FromBody]UpdateRequest request) { return Ok(); }
UpdateRequestの定義はこんな感じです。
/// <summary> /// 更新リクエスト /// </summary> public class UpdateRequest { /// <summary> /// ID /// </summary> public int Id { get; set; } /// <summary> /// 名前 /// </summary> public string Name { get; set; } }
再度SwaggerUIを表示してみる
追加したHttpPost版のWetherforecastが表示されています。中を開くとjson形式のパラメータがポストできるようになっています。
ローカルでWebAPIを叩くとき、PostmanやVSCode拡張のRestClientなどを使ってましたがSwaggerUIだけで完結しそうですね。