Asp.Net core Swashbuckle set operationId 質問する

Asp.Net core Swashbuckle set operationId 質問する

operationIdAsp.Net Core 2.1プロジェクトでswagger属性を設定するにはどうすればいいですか?これ使用すべき投稿ですSwaggerOperationAttributeが、Swashbuckle.AspNetCoreライブラリで見つかりません。また、IOperationFilter

public interface IOperationFilter
{
    void Apply(Operation operation, OperationFilterContext context);
}

Swagger 生成を目的とした実装が見つかりません。

ベストアンサー1

追加のコードを書いたり、追加の依存関係を追加したりすることなく、他に2つのオプションがあります。Swashbuckle.AspNetCore.Annotations

オプション1: 規約ベース -SwaggerGen設定するオプションがあります。次のようCustomOperationIdsに使用するように設定するだけで済みます。ControllerName_HttpMethod

services.AddSwaggerGen(c =>
{
    c.CustomOperationIds(e => $"{e.ActionDescriptor.RouteValues["controller"]}_{e.HttpMethod}");
    c.SwaggerDoc("v1", new Info { Title = "Test API", Version = "v1" });
});

これにより、規則に従って、すべてのメソッドに operationId が追加されますControllerName_HttpMethod

オプション2: ActionFilter/Attribute ベース - 各アクション メソッドを構成できます (SwaggerOperationアクション フィルターの場合と同様にName、次のように HTTP 動詞アクション フィルターにプロパティを追加するだけです)。

[HttpPost(Name="Post_Person")]
[ProducesResponseType(200)]
[ProducesResponseType(400)]
[ProducesResponseType(500)]
public async Task<ActionResult<Response>> PostAsync([FromBody]Request request)
{
    Response result = await _context.PostAsync(request);
    return Ok(result);
}

これは[SwaggerOperation(OperationId = "Post_Person")]EnableAnnotations

おすすめ記事