您如何更改 Swagger 图标?

Ric*_*mer 11 swagger swagger-ui swagger-2.0 asp.net-core-webapi asp.net-core-2.1

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

那么,如何更改 Swagger 的图标?

Bar*_*ham 10

您需要按如下方式注入 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);
})();
Run Code Online (Sandbox Code Playgroud)

2- 在您的 startup.cs 中加载脚本

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

        }
Run Code Online (Sandbox Code Playgroud)

注意:确保在 .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"
    });
Run Code Online (Sandbox Code Playgroud)

}


Ant*_*uez 7

这对我有用:

首先,您必须创建 wwwroot 文件夹,并在其中放置一个名为 swagger 的文件夹。编辑您的 csproj 以包含以下行:

<ItemGroup>
    <None Include="wwwroot\*" />
</ItemGroup> 
Run Code Online (Sandbox Code Playgroud)

该目录下的文件必须是ContentDo not copy. 无论如何,这是默认选项。

然后,您必须将两个名为favicon-16x16.png和 的png 文件favicon-32x32.png放在 swagger 文件夹中。

最后要做的事情,app.UseStaticFiles();在之前添加app.UseSwaggerUI();以使其发挥作用。

您还可以在 wwwroot 文件夹下添加 favicon.ico。

** 注意:如果您修改了端点 url,则使用app.UseSwaggerUI(config => config.SwaggerEndpoint("my/swagger/doc/file.json", "Rest API"));wwwroot 下的目录树必须与 url 匹配。即,wwwroot/my/swagger/doc/favicon-16x16.pngwwwroot/my/swagger/doc/favicon-32x32.png


Esp*_*ans 5

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

当然,如前所述,您需要确保您app.UseStaticFiles();的Configure() 方法中有这样的内容,以便为wwwroot 中的文件提供服务。

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

  <ItemGroup>
    <None Include="wwwroot\*" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)


Chr*_*att 3

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