Swashbuckle 版本控制选择默认 API 版本出现在 Swagger 中
Swashbuckle versioning choose default API version to appear in Swagger
我正在对 API 进行版本控制,我想在 Swagger 中默认显示最新的 API 版本。比如我的API有2个版本,当有人选择显示Swagger时,最先出现的版本是V1.0。用户必须手动选择要显示的最新版本。
在下图中我们可以看到应用程序启动时显示给用户的默认版本是V1.0。
我想知道是否可以默认向用户显示最新的 API 版本。
谢谢!
首先我在Startup.cs中的Configureclass中添加了IApiVersionDescriptionProvider,如下图:
之后,我不得不在 app.UseSwaggerUI() 中反转包含 api 可用版本的列表。
您在 Startup.cs 配置方法中配置 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 的默认版本:
我的解决方案是在以下代码块中添加一个 OrderByDescending
子句:
// build a swagger document and endpoint for each discovered API version
c.MultipleApiVersions(
(apiDescription, version) => apiDescription.GetGroupName() == version,
info =>
{
foreach (var group in apiExplorer.ApiDescriptions.OrderByDescending(p => p.ApiVersion))
{
var description = "My Company API";
info.Version(group.Name, $"My Company API {group.ApiVersion}")
.Contact(ca => ca.Name("My Company).Email("info@mycompany.com"))
.Description(description)
.License(l => l.Name("My Company").Url("https://mycompany.com"))
.TermsOfService("");
}
});
就我而言,我还根据需要使用该迭代来应用一些 UI 细节。
我正在对 API 进行版本控制,我想在 Swagger 中默认显示最新的 API 版本。比如我的API有2个版本,当有人选择显示Swagger时,最先出现的版本是V1.0。用户必须手动选择要显示的最新版本。
在下图中我们可以看到应用程序启动时显示给用户的默认版本是V1.0。
我想知道是否可以默认向用户显示最新的 API 版本。
谢谢!
首先我在Startup.cs中的Configureclass中添加了IApiVersionDescriptionProvider,如下图:
之后,我不得不在 app.UseSwaggerUI() 中反转包含 api 可用版本的列表。
您在 Startup.cs 配置方法中配置 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 的默认版本:
我的解决方案是在以下代码块中添加一个 OrderByDescending
子句:
// build a swagger document and endpoint for each discovered API version
c.MultipleApiVersions(
(apiDescription, version) => apiDescription.GetGroupName() == version,
info =>
{
foreach (var group in apiExplorer.ApiDescriptions.OrderByDescending(p => p.ApiVersion))
{
var description = "My Company API";
info.Version(group.Name, $"My Company API {group.ApiVersion}")
.Contact(ca => ca.Name("My Company).Email("info@mycompany.com"))
.Description(description)
.License(l => l.Name("My Company").Url("https://mycompany.com"))
.TermsOfService("");
}
});
就我而言,我还根据需要使用该迭代来应用一些 UI 细节。