Как я могу указать начальную версию Swagger по умолчанию? - PullRequest
1 голос
/ 12 февраля 2020

У меня есть C# веб-API, который использует Swagger в качестве документации API. Я использовал пакеты Swashbuckle. Среда swagger работает с несколькими версиями, которые я указываю в контроллерах.

Сегодня я представил новую будущую версию (1.2), которая все еще находится в стадии разработки. Я хотел бы открыть swagger в версии 1.1 по умолчанию, но при этом сохранить правильный порядок сортировки в выпадающем списке в правом верхнем углу (например, v1, v1.1, v1.2). В настоящее время он всегда открывает верхнюю версию в раскрывающемся списке.

У кого-нибудь есть идеи, как это сделать?

Dropdown swagger

Ответы [ 3 ]

2 голосов
/ 12 февраля 2020

Порядок, в котором вы настраиваете Swagger UI в Startup.cs - метод Configure определяет порядок раскрывающегося списка. По умолчанию пользовательский интерфейс отображает спецификации, соответствующие первой опции в раскрывающемся списке.

Мы можем изменить порядок версий, как показано ниже, но я не уверен, есть ли какое-либо свойство для переопределения версии по умолчанию при сохранении порядка раскрытия версий в пользовательском интерфейсе.

В приведенном ниже Например, он откроет 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");
}

Но есть обходной путь: вы можете передать значение параметра querystring urls.primaryName, чтобы загрузить эту версию по умолчанию.

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

(Или) Вы можете попробовать настроить интерфейс Swagger, введя пользовательский javascript следующим образом:

app.UseSwaggerUI( 
            ....
            c => c.InjectJavascript(***pass custom javascript here***) )
1 голос
/ 13 февраля 2020

Расширение ответа Боба: решение состоит в том, чтобы отредактировать 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/"
  },
}
0 голосов
/ 05 мая 2020

Я просто перенаправляю первую страницу к версии, указанной в файле конфигурации. Образец для. 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();
        });
...