Есть 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" });
});
Это добавит идентификатор операции ко всем вашим методам, следуя соглашению ControllerName_HttpMethod
.
Вариант 2 : ActionFilter / Attribute based - вы можете настроить каждый метод Action (как вы сделали бы с SwaggerOperation
filter action, просто добавив свойство 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