你如何改变Swagger图标?

问题描述 投票:3回答:3

我正在构建一个ASP.NET CORE Web API并使用Swagger作为文档。我无法更改图标。我在wwwroot下有一个swagger-ui目录,我放置了我的图标,但图标从未出现过。此外,我正在使用自定义js文件中的favascript更改favicon。

那么,如何改变Swagger的图标呢?

swagger swagger-ui asp.net-core-webapi swagger-2.0 asp.net-core-2.1
3个回答
0
投票

你必须基本上覆盖它。默认情况下,Swagger UI将图标设置为从Swagger UI根目录中提取。例如,如果您在/swagger-ui上加载文档,则会从/swagger-ui/favicon-32x32.png/swagger-ui/favicon-16x16.png中提取favicon。因此,您可以将此目录添加到wwwroot并在那里添加您自己的favicon图像。


0
投票

你需要注入jscript如下:

1-创建/assets/js/docs.js如下:

(function() {
    var link = document.querySelector("link[rel*='icon']") || document.createElement('link');;
    document.head.removeChild(link);
    link = document.querySelector("link[rel*='icon']") || document.createElement('link');
    document.head.removeChild(link);
    link = document.createElement('link');
    link.type = 'image/x-icon';
    link.rel = 'shortcut icon';
    link.href = '../assets/images/logo_icon.png';
    document.getElementsByTagName('head')[0].appendChild(link);
})();

2-在startup.cs中加载脚本

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApiVersionDescriptionProvider provider)
        {
            app.UseSwaggerUI(
                options =>
                {                    
                    options.InjectJavascript("../assets/js/docs.js");  
                });

        }

注意:确保在.NET Core Configure方法中启用静态文件。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApiVersionDescriptionProvider provider)
{

    app.UseStaticFiles(); // For the wwwroot folder

    app.UseStaticFiles(new StaticFileOptions
    {
        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "assets/images")),
        RequestPath = "/assets/images"
    });        

    app.UseStaticFiles(new StaticFileOptions
    {
        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "assets/js")),
        RequestPath = "/assets/js"
    });

}


0
投票

如果您只是将您的favicon.ico放在wwwroot文件夹中的根目录下,也可以实现这一点:wwwroot/favicon.ico。放置在根目录下,favicon.ico将用作默认浏览器选项卡图标。

当然,如前所述,您需要确保在Configure()方法中有app.UseStaticFiles();才能在wwwroot中提供文件。

最后还要确保.csproj文件中包含以下内容:

  <ItemGroup>
    <None Include="wwwroot\*" />
  </ItemGroup>
© www.soinside.com 2019 - 2024. All rights reserved.