operationId
Asp.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