首页 文章

Cutomize Swagger UI ASP.NET核心Web API

提问于
浏览
0

我正在尝试在我的ASP.NET Core Web API上自定义swagger UI .

我希望这样的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存储库下载了swagger ui文件并将其放在我的项目中:

enter image description here

我不知道这是否是正确的做法,但我无法看到对swagger UI的任何更改 .

3 回答

  • 0

    您正在使用的教程正在使用: Swashbuckle.AspNetCore 很遗憾在该项目中他们仍然使用Swagger-UI版本2.x,您的屏幕截图显示版本3.x

    有一些Pull请求更新到最新的Swagger-UI:

    但不幸的是,在合并这些方面没有太大进展 .

    我知道你知道如何从git存储库下载文件......
    My recommendation:
    而不是下载swagger-ui文件,从使用您需要的版本的fork(例如:alexvaluyskiy/Swashbuckle.AspNetCore)下载整个项目Swashbuckle.AspNetCore,然后在您的项目中添加对该项目的引用而不是nuget包 .

    另一种选择可能是创建自己的Swashbuckle.AspNetCore分支合并您需要的修补程序,然后使用不同的名称发布您自己的Nuget包 .

  • 0

    我遇到了类似的问题,我需要注入我的样式表:

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

    这已添加到Startup.cs文件中的 app.UseSwaggerUI .

    以下文章有所帮助,但我必须合并两者的信息才能找到答案:

  • 1
    //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();
    

相关问题