由于我的项目目前仍在OAS2上运行,所以我问自己,可以在生成的OpenApi2.0的同时运行OAS3。

我可以想象那里有第二个链接,但是用更新的OAS3.x代替了OAS2.0
我查看了Startup.cs,它承载了我的项目配置,在我看来,它似乎要么是版本2,要么是版本3。是否有可能生成这两个版本并在UI中显示它们?
示例代码:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApiVersionDescriptionProvider provider)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseSwagger(c =>
{
c.SerializeAsV2 = true;
});
app.UseSwagger(c =>
{
c.RouteTemplate = "/swagger/{documentName}/swagger.json";
});
app.UseSwaggerUI(
options =>
{
// build a swagger endpoint for each discovered API version
foreach (var description in provider.ApiVersionDescriptions)
{
options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
}
});谢谢您抽时间见我。
发布于 2022-01-21 08:12:24
当我发布这篇文章时,我自己找到了答案。
所以基本上我做了这个:
app.UseSwagger(c =>
{
c.SerializeAsV2 = true;
c.RouteTemplate = "/swagger/{documentName}/swagger.json";
});
app.UseSwagger(c =>
{
c.SerializeAsV2 = false;
c.RouteTemplate = "/swagger/{documentName}/swaggerv3.json";
});通过这样做,您还可以专门为OAS3创建新的API版本:
foreach (var description in provider.ApiVersionDescriptions)
{
options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
options.SwaggerEndpoint($"/swagger/{description.GroupName}/swaggerv3.json", $"{description.GroupName.ToUpperInvariant()} OAS3");
}

就这样我得到了两个版本。我以为他们会覆盖,但显然不是。谢谢你躲避橡胶..。:D
https://stackoverflow.com/questions/70798126
复制相似问题