web-dev-qa-db-ja.com

SwaggerAPIがドキュメントを更新しない

RESTサービスを文書化するためにSwaggerAPIを使用しています。以前はコントローラーメソッドに有益なコメントがなかったため、Swagger APIには説明が表示されませんでしたが、コメントを更新した後でも表示されます。強調表示された領域にメソッドの説明が表示されないように。

    /// <summary>
    /// Gets the consumer scores by retailer id and return id
    /// </summary>
    /// <param name="retailerId"></param>
    /// <param name="returnId"></param>
    /// <returns></returns>

enter image description here

私は何かが足りませんか?

7
Sameer

SwashbuckleがXMLコメントから読み取るには、ターゲットプロジェクトのXMLドキュメントファイルを有効にする必要があります。それに加えて、スタートアップ構成でそのファイルをSwashbuckleにポイントする必要があります。

Swashbuckleドキュメント から:

プロジェクトの[プロパティ]ダイアログを開き、[ビルド]タブをクリックして、[XMLドキュメントファイル]がオンになっていることを確認します。これにより、ビルド時にすべてのXMLコメントを含むファイルが生成されます。

この時点で、XMLコメントでアノテーションが付けられていないクラスまたはメソッドはビルド警告をトリガーします。これを抑制するには、プロパティダイアログの[警告を抑制する]フィールドに警告コード「1591」を入力します。*

ファイル上のXMLコメントを生成されたSwaggerJSONに組み込むようにSwashbuckleを構成します。

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1",
        new Info
        {
            Title = "My API - V1",
            Version = "v1"
        }
     );

     var filePath = Path.Combine(PlatformServices.Default.Application.ApplicationBasePath, "MyApi.xml");
     c.IncludeXmlComments(filePath);
}

要約、コメント、応答タグでアクションに注釈を付けます

/// <summary>
/// Retrieves a specific product by unique id
/// </summary>
/// <remarks>Awesomeness!</remarks>
/// <response code="200">Product created</response>
/// <response code="400">Product has missing/invalid values</response>
/// <response code="500">Oops! Can't create your product right now</response>
[HttpGet("{id}")]
[ProducesResponseType(typeof(Product), 200)]
[ProducesResponseType(typeof(IDictionary<string, string>), 400)]
[ProducesResponseType(typeof(void), 500)]
public Product GetById(int id)

プロジェクトを再構築してXMLコメントファイルを更新し、SwaggerJSONエンドポイントに移動します。説明が対応するSwaggerフィールドにどのようにマップされているかに注意してください。

10
mclark1129