指定 Swagger 记录的 API

use*_*634 4 swagger asp.net-core

我是 swagger 的新手,并安装并运行了它,但它获取的 API 文件比预期的要多得多。我一直在寻找一种方法来指定记录了哪些 API。

juu*_*nas 7

您可以将 ApiExplorerSettings 属性放在控制器上以将其从 Swagger 中删除:

[ApiExplorerSettings(IgnoreApi = true)]
public class TestApiController : ControllerBase
{
}
Run Code Online (Sandbox Code Playgroud)

如果您想基于某些逻辑将其应用于许多控制器,则可以使用操作模型约定来完成:https : //github.com/juunas11/AspNetCoreHideRoutesFromSwagger/blob/983bad788755b4a81d2cce30f82bc28887b61924/SecondaggersControllersFromSwaggers #L18-L28

public class ActionHidingConvention : IActionModelConvention
{
    public void Apply(ActionModel action)
    {
        // Replace with any logic you want
        if (action.Controller.ControllerName == "Second")
        {
            action.ApiExplorer.IsVisible = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该约定添加在 ConfigureServices 中,例如:

services.AddControllers(o =>
{
    o.Conventions.Add(new ActionHidingConvention());
});
Run Code Online (Sandbox Code Playgroud)