演習 - ASP.NET Core Web API アプリで OpenAPI ドキュメントを有効にする

完了

あなたの会社には、フレーム寸法のサイズに基づいて写真フレームのコストを計算する PrintFramerAPI という名前の API があります。 社内でその API の使い方を知っているのは小規模なチームです。 しかし、サード パーティにその API を採用してもらい、それによってビジネスを拡大するため、それを文書化する必要があります。 この API は ASP.NET Core API なので、OpenAPI を使用して API ドキュメントを公開することにします。

この演習では、OpenAPI を使用して ASP.NET Core Web API を文書化し、現実の例で Swagger UI と Swashbuckle を試します。 最初に、ASP.NET Core Web API プロジェクトを作成しましょう。

Note

このモジュールでは、ローカル開発に .NET CLI (コマンド ライン インターフェイス)Visual Studio Code を使用します。 このモジュールを終了すると、Visual Studio (Windows)、Visual Studio for Mac (macOS)、または Visual Studio Code (Windows、Linux、macOS) を使った継続的開発などの開発環境を使用して、その概念を適用できます。

サンプル Web API プロジェクトを Visual Studio Code にダウンロードする

  1. Visual Studio Code の新しいインスタンスを開きます。

  2. [表示][ターミナル] の順に選択して、ターミナル ウィンドウを開きます。

  3. (省略可能) ファイルのコピー先のディレクトリ (c:\MyProjects など) に移動します。

  4. サンプルの Web API プロジェクトを GitHub からクローンするには、ターミナル ウィンドウで次の git clone コマンドを実行します。

    git clone https://github.com/MicrosoftDocs/mslearn-improve-api-developer-experience-with-swagger && cd mslearn-improve-api-developer-experience-with-swagger/PrintFramerAPI
    
  5. 次のターミナル コマンドを使用して Visual Studio Code でプロジェクトを開きます。

    code -a .
    

Web API を初めて実行する

  1. Visual Studio Code ターミナル ウィンドウで、次のコマンドを入力します。

    dotnet run
    
  2. コマンドからの出力が完了したら、http://localhost:5000/api/priceframe/6/17 に移動します。

    ブラウザーでそのアドレスに移動すると、The cost of a 6x17 frame is $20.00 という応答メッセージが表示されます。

自分で作成した API なので、それがどのようなものかわかっていますが、この API を利用しようと思っている外部の開発者は知る術がありません。 そうした開発者をサポートするために、Swagger ツールのオープンソース バージョンである Swashbuckle を使用して、OpenAPI の助けを借りて、API に関するドキュメントを公開します。

Swagger ライブラリをソリューションに追加する

  1. dotnet add package コマンドを実行して、Swashbuckle をプロジェクトに追加します。

    dotnet add package Swashbuckle.AspNetCore
    
  2. Startup.cs ファイルを開きます。

  3. ファイルの先頭に、別の using エントリを追加します。

    using Microsoft.OpenApi.Models;
    
  4. Swagger ジェネレーターをサービス コレクションに追加するには、メソッド ConfigureServices(IServiceCollection services) を次の実装に置き換えます。

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
    
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
        });
    }
    
  5. Startup.csConfigure メソッドで、次のコード スニペットに示すように、useSwaggeruseSwaggerUI を追加することで、Swagger UI 用のミドルウェアを有効にします。

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });
    
            app.UseDeveloperExceptionPage();
        }
    
        app.UseHttpsRedirection();
    
        app.UseRouting();
    
        app.UseAuthorization();
    
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        }); 
    }
    
  6. エディターで変更内容を保存します。

  7. 変更を確認するには、ASP.NET アプリケーションをローカルで実行します。 Visual Studio Code のターミナル ウィンドウで、次のコマンドを入力します。

    dotnet run
    
  8. ブラウザーで、http://localhost:5000/swagger/v1/swagger.json に移動します。

    この時点でブラウザーの応答は、次のような、API のエンドポイントが記述されているドキュメントです。

    Swagger.json response in the browser showing the definition of our API.