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
});
// 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("");
}
});
2条答案
按热度按时间4xy9mtcn1#
首先,我在Startup.cs的Configure类中添加了IapiVersionDescriptionProvider,如下所示:
在那之后,我不得不反转包含appl.UseSwaggerUI()中的API可用版本的列表。
在Startup.cs Configure方法中配置Swagger UI的顺序决定了下拉列表的顺序。
@Bob Ash的以下回答很有帮助-How can i specify the default opening version of swagger?
通过这样做,我成功地将V2.0显示为API的默认版本:
wvyml7n52#
我的解决方案是在下面的代码块中添加一个
OrderByDescending
子句:在我的例子中,我还使用该迭代来根据我的需要应用一些UI细节。