从 swagger UI 中排除特定的 Web Api 端点

Ark*_*adi 12 c# asp.net-web-api swagger-ui asp.net-core webapi

我正在使用 Swagger UI 和 asp.net core web api。对于我的CRUD操作,我有一个基本控制器类,它定义了抽象方法:

public class BaseController<TDto, TEntity>
{
    [HttpPost, Route("create-single")]
    public abstract Task<ObjectResult> CreateAsync(TDto input);

    [HttpPost, Route("create-many")]
    public abstract Task<ObjectResult> CreateManyAsync(IList<TDto> input);

    [HttpGet, Route("get-all")]
    public abstract Task<ObjectResult> GetAllAsync();

    [HttpGet, Route("get/{id}")]
    public abstract Task<ObjectResult> GetByIdAsync(Guid id);

    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

某些控制器可能不需要所有 CRUD 方法,并且我需要从 swagger 中消失这些端点。

例如,我需要消失/get/{id}特定控制器的端点,实现此目的的最佳方法是什么?

小智 21

您可以向控制器和操作添加以下属性,以将它们从生成的文档中排除:[ApiExplorerSettings(IgnoreApi = true)]