web-dev-qa-db-ja.com

Swagger(Swashbuckle)ヘッダーを非表示

Swashbuckleを使用して、ASP.NET WebAPIプロジェクトにSwaggerドキュメントを追加します。 CSSを挿入せずに、デフォルトのヘッダー(Swaggerロゴ付き)をドキュメントページから非表示にするにはどうすればよいですか?

18
ranquild

残念ながら、今はjavascriptでそれを行うことができると思います。

SwaggerConfig.csで、次のような.jsファイルを挿入できます。

.EnableSwaggerUi(c =>
{                        
    c.InjectJavaScript(thisAssembly, "yournamespace.yourscript.js");
});

したがって、このスクリプトでは、ヘッダーを非表示にするなど、好きなことを行うことができます。

document.querySelector("#header").style.display = "none";

この post は、ヘッダーに2つのテキストボックスを配置してヘッダーをカスタマイズする方法を示しています。

編集:

@dimaKudrの回答で提案されているアプローチの方が優れています。メニューを非表示にするには、CSSスタイルを挿入するだけで十分です(JSは必要ありません)。

10

上記のようにJSを挿入すると、ページの読み込み時にヘッダーが点滅していました。しばらく表示された後、スクリプトによって無効にされました。私にとってよりうまくいくアプローチがあります。 https://github.com/domaindrivendev/Swashbuckle/issues/476

JSの代わりにCSSを挿入できます。

#header {
display:none;
}
14
dimaKudr

私が最初にこれに遭遇したとき、私はcss/jsを注入し始めましたが、毎回、注入されたcssでものを隠すのは苦労して一種の「ハック」でした。したがって、しばらくして、インデックスファイルをこの修正バージョンに置き換えただけです index.html 必要に応じて変更できます。 id = headerを使用してdivを削除すると、ヘッダーが削除されます。また、これにより、ロゴの置き換えなどがはるかに簡単になります。ロゴ部分については、ここに示すように、ロゴsrcをen 64ビットエンコードに設定できます encode image 。また、タブ内のリンクされたファビコンを削除するのは、行を削除するのと同じくらい簡単です。また、他のページなどへのリンクを追加するのは簡単です。このようにswaggerconfigにインデックスを挿入します

c.CustomAsset("index", thisAssembly, "Path.To.index.html");

インデックスを埋め込みリソースに設定することを忘れないでください。

0
SJFJ