Asp.net & Swagger 仅显示特定端点

Rob*_*ert 2 c# asp.net swagger swashbuckle

默认情况下,是否可以在 swagger 中隐藏所有端点,并仅显示我用某种属性标记的端点?

Tom*_*Dee 5

您可以使用该属性:

[ApiExplorerSettings(IgnoreApi = true)]
Run Code Online (Sandbox Code Playgroud)

在您的自定义基本控制器上或仅在您想要隐藏的控制器上。如果您是从 ApiController 继承的,那么您可以创建自己的基本控制器,也可以用它标记每个控制器。无需执行单独的操作,因为这将侦听控制器的属性。如果你标记你的基本控制器,那么你需要手动标记动作或控制器:

[ApiExplorerSettings(IgnoreApi = false)]
Run Code Online (Sandbox Code Playgroud)

如果你想隐藏端点,因为它们不再被使用,但仍然希望代码在那里,那么你可以做两件事。

  1. 将这些方法的访问修饰符更改为私有

  2. 使用[Obsolete]属性标记要隐藏的所有项目,并在启动时更改 swagger 配置,如下所示:

    httpConfiguration.EnableSwagger(c =>
    {
        c.IgnoreObsoleteActions();
    });
    
    Run Code Online (Sandbox Code Playgroud)


小智 3

您可以将以下属性添加到控制器以忽略所有端点。

 [ApiExplorerSettings(IgnoreApi = true)]
Run Code Online (Sandbox Code Playgroud)

您可以为要显示的端点设置IgnoreApi = false 。

另一方面,如果您对特定方法应用IgnoreApi = false ,则只有该方法将被忽略。