【问题标题】:Swagger UI nested expandable groupingsSwagger UI 嵌套的可扩展分组
【发布时间】:2016-06-08 21:06:17
【问题描述】:

我正在使用 SwaggerUI 来记录 API 端点。目前,它们按控制器名称分组,放在一个长列表中。然后您可以展开每个控制器以查看操作。一切标准。

我想做的是将控制器分组到常见的可扩展组下。

例如,您有一个 Pet 组,可以展开它以显示 Cat 和 Dog 控制器,然后可以依次展开以显示它们各自的操作。

我已尝试使用标签来完成此操作,但我能得到的最好结果是将所有操作归为一个可扩展组。

有谁知道标准的 swaggerUI 是否可以做到这一点?还是我需要创建自定义 HTML 来完成此操作?

【问题讨论】:

  • 您无法使用标准的 Swagger UI 创建嵌套组。但是,您可以在一个方法上应用多个标签(例如 Pet 和 Cat)。在这种情况下,该方法将显示在 Pet 组和 Cat 组中。

标签: c# asp.net-web-api2 swagger-ui swashbuckle


【解决方案1】:

我假设您正在使用 Swashbuckle?您需要的是实现 IDocumentFilter。查看Swagger 2.0 Spec的标签。

From the docs:

文档过滤器

通过连接一个或多个文档过滤器对整个 Swagger 文档进行后期修改。

IDocumentFilter 有如下接口:

void Apply(SwaggerDocument swaggerDoc, SchemaRegistry schemaRegistry, IApiExplorer apiExplorer);

这提供了修改最终 SwaggerDocument 的完全控制权。您可以从提供的SwaggerDocument(例如版本)和IApiExplorer 中获得更多上下文。您应该对 Swagger 2.0 规范有很好的了解。在使用此选项之前。

【讨论】:

  • 是的,我正在使用 Swashbuckle。谢谢,我会试一试!