首页 > 解决方案 > Swashbuckle 版本控制选择默认的 API 版本出现在 Swagger

问题描述

我正在对我的 API 进行版本控制,我想在 Swagger 中显示最新的 API 版本作为默认值。比如我的API有2个版本,当有人选择展示Swagger时,最先出现的版本是V1.0。用户必须手动选择要显示的最新版本。

在下图中,我们可以看到应用程序启动时向用户显示的默认版本是 V1.0。

API 版本控制 Swagger

我想知道是否可以默认向用户显示最新的 API 版本。

谢谢!

标签: swaggerswashbuckleswashbuckle.aspnetcore

解决方案


首先,我在 Startup.cs 的 Configure 类中添加了 IApiVersionDescriptionProvider,如下所示:

在 Startup.cs 中配置方法

之后,我不得不反转包含可用于 app.UseSwaggerUI() 中 api 版本的列表。

您在 Startup.cs Configure 方法中配置 Swagger UI 的顺序决定了下拉列表的顺序。

        app.UseSwaggerUI(c =>
        {
            foreach (var description in apiVersionDescriptionProvider.ApiVersionDescriptions.Reverse())
            {
                // Create the Swagger endpoints for each version
                c.SwaggerEndpoint($"/swagger/" +
                    $"LibraryOpenAPISpecification{description.GroupName}/swagger.json",
                    description.GroupName.ToUpperInvariant());
            }
            c.RoutePrefix = ""; // swagger UI at the root index.html
        });

@Bob Ash 的以下回答非常有帮助 -我如何指定招摇的默认打开版本?

通过这样做,我现在成功地将 V2.0 显示为 api 的默认版本:

在此处输入图像描述


推荐阅读