web-dev-qa-db-ja.com

Swagger UI ASP.NET Core WebAPIをカスタマイズする

ASP.NET Core WebAPIでSwaggerUIをカスタマイズしようとしています。

私はこのようなUIが欲しいです:

enter image description here

私はこれらのチュートリアルに従っています:

これはStartup.csの構成です。

// Add the detail information for the API.
services.ConfigureSwaggerGen(options =>
{
    // Determine base path for the application.
    var basePath = _env.WebRootPath;

    // Complete path
    var xmlPath = Path.Combine(basePath, "myapi.xml");

    // Set the comments path for the swagger json and ui.
    options.IncludeXmlComments(xmlPath);
});

app.UseStaticFiles();

// Enable middleware to serve generated Swagger as a JSON endpoint
app.UseSwagger();

// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
app.UseSwaggerUI(c =>
{                
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyAPI");
});  

私はすでにgitリポジトリからswaggeruiファイルをダウンロードし、次のようにプロジェクトに配置しました。

enter image description here

これが正しいことかどうかはわかりませんが、SwaggerUIへの変更を確認することはできません。

7
perozzo

あなたがフォローしているチュートリアルは次のものを使用しています:Swashbuckle.AspNetCore残念ながら、そのプロジェクトではまだSwagger-UIバージョン2.xを使用していますが、スクリーンショットにはバージョン3が表示されています。バツ


最新のSwagger-UIに更新するためのプルリクエストがいくつかあります。

しかし残念ながら、それらの統合に向けた進展はあまりありません。

Gitリポジトリからファイルをダウンロードする方法を知っているようです...
私の推奨事項:
swagger-uiファイルをダウンロードする代わりに、必要なバージョンを使用しているフォークからプロジェクトSwashbuckle.AspNetCore全体をダウンロードします(例: alexvaluyskiy/Swashbuckle.AspNetCore )。プロジェクトで、nugetパッケージの代わりにそのプロジェクトへの参照を追加します。


別のオプションとして、Swashbuckle.AspNetCoreの独自のフォークを作成し、必要な修正をマージしてから、別の名前で独自のNugetパッケージを公開することもできます。

3
//I hope this will help you , you can get //https://localhost:44x22/docs/index.html

        app.UseSwagger(o =>
        {
            o.RouteTemplate = "docs/{documentName}/docs.json";
        });
        // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), 
        // specifying the Swagger JSON endpoint.
        //This line enables Swagger UI, which provides us with a Nice, simple UI with which we can view our API calls.
        app.UseSwaggerUI(c =>
        {

            c.IndexStream = () => GetType().Assembly
   .GetManifestResourceStream("CustomUIIndex.Swagger.index.html"); // requires file to be added as an embedded resource
            c.InjectStylesheet("/css/swagger-ui/custom.css");// css path
            c.InjectJavascript("../css/swagger-ui/custom.js"); javascript path
            c.RoutePrefix = "docs";
            c.SwaggerEndpoint("../docs/v1/docs.json", "API v1");
            c.SwaggerEndpoint("../docs/v2/docs.json", "API V2");
        });
        app.UseStaticFiles();
2
Praveen P K

同様の問題が発生したため、スタイルシートを挿入する必要がありました。

c.InjectStylesheet("/Swagger/Ui/custom.css")

これは、Startup.csファイルのapp.UseSwaggerUIに追加されました。

次の記事は役に立ちましたが、答えを見つけるために両方の情報をマージする必要がありました。

2
Debro012