4

私は最近、エンジニアに API 機能を内部的に公開する目的で、swashbuckle を使用して Web API に swagger を統合することを提案しました。私たちの目的では、API がバックエンドであるため、swagger は本番環境では意味がありません。エンタープライズ環境であるため、API の量が多く、次の 2 つの大きな問題が予測できます。

アセンブリのサイズは約 2.6MB です。 swahbuckle が統合された数百の API ビルドが突然、すべてのアプリのサイズが 4.5 倍に増加したと仮定します。理不尽な一撃。swashbuckle.core を見ると、サイズの大部分はバンドルされている swagger-ui によるものだと思われます。swashbuckle から swagger-ui をアンバンドルし、代わりに別の nuget パッケージを介して swagger-ui を追加できるようにすることは可能でしょうか。

swashbuckle 内にバンドルされた swagger-ui には、swagger-ui の独自のインスタンスを持つすべての API があります。swagger-ui に加えられたカスタマイズは、すべての単一の api プロジェクトに変更を加えない限り、他のプロジェクトには影響しません。これにより、労力が増加し、保守性の可能性が減少します。私たちはswagger-uiを一元的にホストしており、開発者がswagger実装をローカル(ローカルホスト)で試すことができるようにカスタマイズを行っているため、swagger-uiを統合するswashbuckleの影響を大きく受けており、swagger-uiをプルするオプションがあった方がはるかに優れていたでしょう.オプションで別の nuget パッケージ。

上記の問題に対処するためのパイプラインはありますか?それとも、維持する必要があるという犠牲を払って、単純にフォークして先に進むための最良の機会はありますか?

4

1 に答える 1

0

Swashbuckleは、あなたが言及したようにかなり大きいnugetの単一のアセンブリとして利用できます。

実際には、アセンブリ内からSwagger-UIをレンダリングするために使用されるすべての必要なライブラリがバンドルされています(jQuery、BackBone など)。

Swashbuckleを Github から直接ダウンロードすると、ライブラリを埋め込まずにビルドすることができ、 130kbファイルSwashbuckle.Core/Binとしてフォルダーに保存され、 nugetバージョンの 20 分の 1 になります。

Swashbuckleのすべての機能は同じままです (もちろん、Swagger-UI のレンダリングは完全に壊れますが、ファイルで使用EnableSwaggerUiしない場合は問題ありませんSwaggerConfig.cs) 。

その場合、Swashbuckle Github リポジトリの最新バージョンをフォークせずに (そこから直接動作するため) 取得するだけで済みます。つまり、メンテナンスは不要です。

于 2016-09-13T14:48:12.183 に答える