【问题标题】:Modularity: unbundling swagger-ui from swashbuckle模块化:从 swashbuckle 中分离出 swagger-ui
【发布时间】:2015-09-23 23:38:26
【问题描述】:

我最近提议使用 swashbuckle 将 swagger 集成到我们的 web-api 中,以便在内部向我们的工程师公开 API 功能。出于我们的目的,swagger 在生产中没有意义,因为 api 是后端.....作为企业环境,API 的数量很大,我可以预见两个主要问题:

程序集大小约为 2.6MB:假设数百个 apis 与 swahbuckle 集成突然间,我们所有应用程序的大小增加了 4.5 倍。不合理的打击。查看 swashbuckle.core,我怀疑大部分大小来自捆绑的 swagger-ui。是否可以将 swagger-ui 从 swashbuckle 中解绑,而是允许通过单独的 nuget 包添加 swagger-ui。

swashbuckle 中捆绑的 swagger-ui 让每个 api 都有自己的 swagger-ui 实​​例。任何对 swagger-ui 的定制对其他项目都没有影响,除非对每个单独的 api 项目都进行了更改,从而增加了工作量并降低了可维护性的机会。我们集中托管 swagger-ui 并进行定制,以允许开发人员在本地 (localhost) 尝试他们的 swagger 实现,因此受到 swashbuckle 集成 swagger-ui 的极大影响,如果可以选择将 swagger-ui 通过一个单独的 nuget 包(可选)。

是否有任何解决上述问题的方法,或者我们是否有最好的机会以维护它为代价简单地分叉并继续前进?

【问题讨论】:

    标签: swagger swagger-ui swashbuckle


    【解决方案1】:

    Swashbuckle 可作为 nuget 中的单个程序集使用,正如您所提到的,它相当大。

    它实际上捆绑了所有必要的库,用于从程序集中渲染 Swagger-UI(例如 jQuery、BackBone...)

    下载 Swashbuckle directly from Github 让您可以在不嵌入任何库的情况下构建它,并以 130kb 文件的形式在 Swashbuckle.Core/Bin 文件夹中结束,比 nuget 小 20 倍 版本。

    Swashbuckle 的所有功能都保持不变(当然 Swagger-UI 的渲染会完全损坏,但如果不在 SwaggerConfig.cs 文件中使用 EnableSwaggerUi,这不是问题)

    在这种情况下,您只需要获取最新版本的 Swashbuckle Github 存储库,而无需分叉(因为它直接从中工作),这意味着无需维护

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多