我最近提议使用swashbuckle将swagger集成到我们的web-apis中,以便在我们的工程师内部公开API功能。为了我们的目的,swagger在生产中没有意义,因为apis是后端.....作为企业环境,API的数量很大,我可以预见两个主要问题:
组装大小约为2.6MB:假设数百个api构建时突然集成了swahbuckle,我们所有应用程序的大小都增加了4.5倍。一个不合理的打击。看着swashbuckle.core,我怀疑大部分尺寸都来自swagger-ui被捆绑。是否可以从swashbuckle中解开swagger-ui,而是通过单独的nuget包添加swagger-ui。
swashbuckle中的捆绑swagger-ui让每一个api都有自己的swagger-ui实例。对swagger-ui进行的任何定制都不会对其他项目产生任何影响,除非对每个api项目进行更改,从而增加了工作量并降低了可维护性。我们集中管理swagger-ui并进行定制以允许开发人员在本地尝试他们的swagger实现(localhost),因此swashbuckle整合了swagge-ui会有很大的影响,而且可以选择拉开招摇 - ui通过单独的nuget包可选。
有没有什么可以解决上述问题,或者我们最好的机会是以维持它为代价来简单地分叉和前进?
答案 0 :(得分:0)
Swashbuckle在nuget中作为单个程序集提供,如您所述,它非常大。
它实际上捆绑了用于在程序集中呈现 Swagger-UI 的所有必需的库(例如jQuery,BackBone ......)
下载Swashbuckle directly from Github使您可以在不嵌入任何lib的情况下构建它,并最终作为 130kb 文件放在Swashbuckle.Core/Bin
文件夹中,比文件小20倍 nuget 版本。
Swashbuckle 的所有功能都保持不变(当然,Swagger-UI渲染完全被破坏了,但如果不在{{1}中使用EnableSwaggerUi
则不会出现问题文件)
在这种情况下,您只需要获取最新版本的Swashbuckle Github仓库,而不需要它(因为它可以直接使用),这意味着无需维护。 / p>