16

现在我正在开发一个 ASP.Net Web API 并使用 Swashbuckle 作为它的文档。我知道 Swashbuckle 内部使用 Swagger-UI,我知道我们可以通过注入我们的 css 或 javascript 文件来修改布局,甚至改变 index.html 的布局。

我为 Swagger-UI https://github.com/jensoleg/swagger-ui找到了一个很好的主题并尝试实现它但无法使其工作。特别是当我想注入 bootstrap.js 时。无论如何我可以完全改变 Swashbuckle Swagger UI 实现,以便我可以使用该回购中的解决方案吗?

4

4 回答 4

14

当然可以 - 分两步。

1) 在程序集中包含文件 Index.html 作为嵌入式资源。例如,假设您的 Web api 项目名为“Contosco.Api”,Index.html 将位于该项目的“/Content/Index.html”下。

2) 用你自己的覆盖 swagger UI 主 html 页面

[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
public class SwaggerConfig 
{
  public static void Register()
  {
    var thisAssembly = typeof(SwaggerConfig).Assembly;
    GlobalConfiguration.Configuration.EnableSwagger(c => {
     // configure swagger
    })
    .EnableSwaggerUi(c => {
      // beware - the Contosco.Api.Content.Index.html has to match your project paths :)
      c.CustomAsset("index", thisAssembly, "Contosco.Api.Content.Index.html");
    });
  }
}
于 2015-12-10T09:53:30.533 回答
1

您只需下载.zip文件夹,提取并包含到您的项目中。在SwaggerConfigre.cs您不再需要配置。只需将模板放入文件夹Swagger,当您访问{domain}/swagger它时会点击index.html. (不需要将构建操作更改为嵌入式资源,内容很好)

于 2016-01-10T10:36:57.063 回答
1

我可以按照这里的简单步骤使用最新的 swagger-ui,https://swagger.io/docs/swagger-tools/#swagger-ui-documentation-29

  1. 从 GitHub 下载 swagger-ui
  2. 提取并复制 dist (rename folder to swagger) 文件夹并将其包含在项目中
  3. 修改 dist 文件夹中的 index.html 以指向您的 swagger 文档路径(当然,它是由 Swashbuckle 生成的)
于 2017-10-26T08:49:20.387 回答
0

对于 .NET Core 项目,该解决方案与@OndrejSvejdar 的(正确)答案略有不同:

将 index.html 添加为嵌入式资源后,您必须app.UseSwaggerUI()在 Startup.cs 中添加以下行...

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        //...

        app.UseSwaggerUI(c =>
        {
            c.IndexStream = () => GetType().GetTypeInfo().Assembly.GetManifestResourceStream("Your.Default.Namespace.Subfolder.Swagger_Custom_index.html");
        });

        //...
    }

可以在此处找到该过程的所有详细信息:https ://stackoverflow.com/a/51043251/430742

于 2018-06-27T07:56:42.227 回答