.NET Core 2.1 Swashbuckle - 按区域对控制器进行分组

Cas*_* TL 4 swagger swashbuckle asp.net-core asp.net-core-2.1

我的情况比较简单。我有一个非常大的 .NET Core 2.1 MVC/WebApi,分为几个区域,代表我系统的不同模块。我使用 Swagger (SwashBuckle) 并且效果很好。我的路由就像{area}/{controller}/{action}.

在 Swagger UI 中,每个动作都被分组到控制器中(标准行为)。我的控制器和操作列表变得非常庞大且难以掌握。因此,如果 Swagger 可以将我的控制器分成不同的区域,我会很高兴!使折叠area x和每个控制器成为可能area x

我真的很想念这个功能或自己实现它的方法!任何想法表示赞赏!

更新

我试过用标签注释动作。

这给了我:

- Area 1
    - MethodFromControllerA()
    - MethodFromControllerB()
- Area 2
    - MethodFromControllerC()
    - MethodFromControllerD()
Run Code Online (Sandbox Code Playgroud)

我想要的是:

- Area 1
    - ControllerA
        - MethodFromControllerA()
    - ControllerB
        - MethodFromControllerB()
- Area 2
    - ControllerC
        - MethodFromControllerC()
    - ControllerD
        - MethodFromControllerD()
Run Code Online (Sandbox Code Playgroud)

更新 2

另一种选择是为我的每个领域制定几个规范。就像每个区域都有不同的 Swagger UI。可能的?

B12*_*ter 7

您首先需要安装注释并在启动时启用它们:

services.AddSwaggerGen(c =>
{
   c.EnableAnnotations();
});
Run Code Online (Sandbox Code Playgroud)

然后你需要将你的“区域”作为标签添加到每个动作中。

[SwaggerOperation(
    Tags = new[] { "Area51" }
)]
Run Code Online (Sandbox Code Playgroud)

当您打开 swagger ui 时,它现在应该自动按标签分组(默认情况下,控制器名称是所选标签)。

使用现有的 swagger ui 生成器,目前无法开箱即用地对端点进行进一步嵌套分组。