【问题标题】:Is it possible to specify multiple assemblies for a Swashbuckle CustomAsset?是否可以为 Swashbuckle CustomAsset 指定多个程序集?
【发布时间】:2018-07-25 06:19:13
【问题描述】:

我正在使用 Swashbuckle 将我们 API 的 Swagger 文档嵌入到我们的 .NET Web API 2.2 应用程序 (.NET 4.5) 中。到目前为止,所有控制器都存在于主 Web API dll 中,但是当我们开始构建 API 时,我们正在将不同版本的 API 移动到单独的 dll 中。

在 Swashbuckle 中指定自定义资产时,可以为资源路径指定 1 个程序集,例如“v1”-> V1Assembly。但是,我希望支持用户能够查看所有版本和程序集的所有 API 端点。如何确保此功能在 Swashbuckle 中是可行的?本质上,我希望帮助系统上有一个“全部”或“索引”端点,以显示所有版本化程序集的所有潜在 API 资源。

我的想法是扩展 SwaggerUiConfig 以允许 CustomAsset 接受一组程序集而不是一个程序集的新功能,这样我们就可以查询多个程序集来生成文档,而不仅仅是一个。

对如何在 SwaggerConfig 或其他方式中完成此操作有任何想法吗?

【问题讨论】:

  • 乱想:Swashbuckle 是根据你生成的 XML 文档文件生成的。因此,如果您生成了一个组合文件并将 Swashbuckle 指向它,那么您的问题应该得到解决。
  • 感谢您的建议。这是一个有趣的观点,绝对值得进行一些研究。唯一的问题是弄清楚如何将多个程序集中的 xml 合并到一个程序集中。我想知道是否要为所有程序集指定相同的 xml 名称,如果它会生成一个巨大的聚合程序集。这对文档有所帮助,但如何将其与实时 API 调用相协调?

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


【解决方案1】:

如果我在您开始版本控制时理解正确,那么您最终会使用多个 Web API。

您应该考虑使用 aspnet-api-versioning 重构您的代码
您需要在控制器中做的就是使用以下方式识别它们:
[ApiVersion( "AreaOne" )]
https://github.com/Microsoft/aspnet-api-versioning/wiki/How-to-Version-Your-Service
因为 Swashbuckle 完全支持。

【讨论】:

  • 我试图找到提到的属性,但找不到。它是在比我们当前使用的更高版本的 .NET 中(我们当前使用的是 .NET 4.5)吗?计划是迁移到最新版本并使用 ASP.NET Core,但此步骤需要在更改发生之前完成。
  • @abraganza 您的参考文献中有 aspnet-api-versioning 吗?如果不从nuget添加它
  • 知道了,谢谢。将尝试一下,看看它是否对 Swashbuckle 有帮助...必须安装 Microsoft.AspNet.WebApi.Versioning
猜你喜欢
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 2011-05-20
  • 2011-04-19
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多