4

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

程序集大小约为 2.6MB:假设使用 swahbuckle 构建数百个 api,突然我们所有应用程序的大小增加了 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 包。

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

4

1 回答 1

0

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

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

直接从 Github下载 Swashbuckle使您可以在不嵌入任何库的情况下构建它,并且最终在Swashbuckle.Core/Bin文件夹中以130kb文件的形式出现,比nuget版本小 20 倍。

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

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

于 2016-09-13T14:48:12.183 回答