【问题标题】:How can i specify the default opening version of swagger?如何指定 swagger 的默认打开版本?
【发布时间】:2020-02-12 10:56:27
【问题描述】:

我有一个使用 Swagger 作为 API 文档的 C# Web API。我使用了 Swashbuckle 包。 swagger 环境正在使用我在控制器中指定的多个版本。

今天我介绍了一个新的未来版本(1.2),它仍在开发中。我想默认在 1.1 版本上打开 swagger,但仍然在右上角的下拉列表中保持正确的排序顺序(例如 v1、v1.1、v1.2)。目前它总是在下拉列表中打开顶级版本。

有人知道怎么做吗?

【问题讨论】:

  • 如何在 Startup.cs 中添加版本?

标签: c# asp.net-core swagger swashbuckle


【解决方案1】:

您在 Startup.cs - Configure 方法中配置 Swagger UI 的顺序决定了下拉列表的顺序。默认情况下,UI 会显示与下拉列表中的第一个选项对应的规范。

我们可以更改版本的顺序,如下所示,但我不确定是否有任何属性可以覆盖默认版本,同时保留 UI 中的版本下拉顺序。

在下面的例子中,它会默认打开 v1.1。

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1.1/swagger.json", "V1.1");
    c.SwaggerEndpoint("/swagger/v1.0/swagger.json", "V1.0");
    c.SwaggerEndpoint("/swagger/v1.2/swagger.json", "V1.2");
}

但是,有一个解决方法:您可以传递查询字符串参数 urls.primaryName 的值,以便它默认加载该版本。

https://localhost:5001/swagger/index.html?urls.primaryName=v1.1

(或) 您可以尝试通过注入自定义 javascript 来自定义 Swagger UI,如下所示:

app.UseSwaggerUI( 
            ....
            c => c.InjectJavascript(***pass custom javascript here***) )

【讨论】:

    【解决方案2】:

    扩展 Bob 的回答:解决方案是编辑 Properties/launchSettings.json:

    "profiles": {
      "Command.Broker": {
        "commandName": "Project",
        "launchBrowser": true,
        "launchUrl": "swagger/index.html?urls.primaryName=v1.1",
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development"
        },
        "applicationUrl": "http://localhost:51476/"
      },
    }
    

    【讨论】:

      【解决方案3】:

      我只是将首页重定向到配置文件中指定的版本。 .net core 示例

      ...
      string SwaggerStartupVersion = "V2";
      ...
      
          public void ConfigureApp(IApplicationBuilder app, IWebHostEnvironment env, IApiVersionDescriptionProvider provider)
          {
              app.Use(async (context, next) =>
              {
                  var isFrontPage = context.Request.Path.Value == "/index.html" && !context.Request.QueryString.HasValue;
                  if (isFrontPage)
                  {
                      context.Response.Redirect($"/index.html?urls.primaryName={SwaggerStartupVersion}");
                      return;
                  }
      
                  await next();
              });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-13
        • 1970-01-01
        • 2010-09-17
        • 2016-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多