ASP.NET Core Web APIのOpenAPI構築

ASP.NET Core Web APIのOpenAPI構築

Visual Studioを使用して、ASP.NET Core Web APIをOpenAPI(Swagger)仕様に基づいて構築する手順。意外と見つけられなかったので手順を備忘録で置いときます。もう少しいい手順があるかも。

1. プロジェクトの作成
Visual Studioを起動し、「新しいプロジェクトの作成」を選択します。テンプレートから「ASP.NET Core Web API」を選び、プロジェクトの基本設定を行います。

2. 新しいAPIの追加:
Controllerに追加したいAPIのクラスを追加します。

Solution ExplorerからControllerフォルダを右クリックし、コントローラーを選択

APIを選択し、「APIコントローラー -空」を選択。その後、「REST APIの名前」になるクラス名を記述

以下は、Hello Worldと表示するAPIの追加例

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace AnalyzeAccessLog.Controllers;

[Route("api/[controller]/[action]")]
[ApiController]
public class AnalyzeController : ControllerBase
{
    private readonly ILogger<AnalyzeController> _logger;

    /// <summary>
    /// コンストラクタ
    /// </summary>
    /// <param name="logger"></param>
    public AnalyzeController(ILogger<AnalyzeController> logger)
    {
        _logger = logger;
    }

    /// <summary>
    /// Hello Worldと表示
    /// </summary>
    /// <returns></returns>
    [HttpGet(Name = "HelloWorld")]
    public string HelloWorld()
    {
        return "Hello World";
    }
}

これを実行するとswaggerが立ち上がり、Hello Worldが帰ってくる。クラス名/関数名がそのままAPIになる。

3. ドキュメントの設定:
Solution Explorerでプロパティを右クリックし「ビルド」-「出力」のドキュメントファイルにチェックを入れる。

Program.cs の

builder.Services.AddSwaggerGen();

を以下のように書き換える。

// Add documents from source code
var xmlPath = System.Reflection.Assembly.GetEntryAssembly().Location.Replace("dll", "xml");
builder.Services.AddSwaggerGen(options => options.IncludeXmlComments(xmlPath));

これを実行するとこんな感じでC#の関数コメントがswaggerに表示される。