現在、ASP.Net Web APIを開発しており、ドキュメントにSwashbuckleを使用しています。 Swashbuckleが内部でSwagger-UIを使用していることは知っています。また、cssまたはjavascriptファイルを挿入することでレイアウトを変更でき、index.htmlのレイアウトを変更することもできます。
Swagger-UIに適したテーマを見つけました https://github.com/jensoleg/swagger-ui 実装しようとしましたが、機能させることができません。特にbootstrap.jsを注入したいとき。とにかく、Swashbuckle Swagger UIの実装を完全に変更して、そのリポジトリからソリューションを使用できるようにすることはできますか?
確かにできます-2つのステップで。
1)ファイルIndex.htmlを埋め込みリソースとしてアセンブリにインクルードします。たとえば、Web APIプロジェクトの名前が「Contosco.Api」で、Index.htmlがこのプロジェクトの「/Content/Index.html」の下にあるとします。
2)SwaggerUIのメインHTMLページを独自のもので上書きします
[Assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
public class SwaggerConfig
{
public static void Register()
{
var thisAssembly = typeof(SwaggerConfig).Assembly;
GlobalConfiguration.Configuration.EnableSwagger(c => {
// configure swagger
})
.EnableSwaggerUi(c => {
// beware - the Contosco.Api.Content.Index.html has to match your project paths :)
c.CustomAsset("index", thisAssembly, "Contosco.Api.Content.Index.html");
});
}
}
.Zip
フォルダーをダウンロードし、抽出してプロジェクトに含めるだけです。 SwaggerConfigre.cs
では、これ以上構成する必要はありません。テンプレートをフォルダSwagger
に置くだけで、{domain}/swagger
にアクセスするとindex.html
になります。 (ビルドアクションを埋め込みリソースに変更する必要はありません。コンテンツは問題ありません)
ここで簡単な手順を実行することで、最新のswagger-uiを使用できました https://swagger.io/docs/swagger-tools/#swagger-ui-documentation-29
.NET Coreプロジェクトの場合、ソリューションは@OndrejSvejdarの(正しい)答えとは少し異なります。
Index.htmlを埋め込みリソースとして追加した後、Startup.csのapp.UseSwaggerUI()
に次の行を追加する必要があります。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//...
app.UseSwaggerUI(c =>
{
c.IndexStream = () => GetType().GetTypeInfo().Assembly.GetManifestResourceStream("Your.Default.Namespace.Subfolder.Swagger_Custom_index.html");
});
//...
}
プロセスのすべての詳細はここで見つけることができます: https://stackoverflow.com/a/51043251/430742