首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您能在同一个项目中同时生成OAS2和OAS3吗?

您能在同一个项目中同时生成OAS2和OAS3吗?
EN

Stack Overflow用户
提问于 2022-01-21 08:06:53
回答 1查看 79关注 0票数 0

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

我可以想象那里有第二个链接,但是用更新的OAS3.x代替了OAS2.0

我查看了Startup.cs,它承载了我的项目配置,在我看来,它似乎要么是版本2,要么是版本3。是否有可能生成这两个版本并在UI中显示它们?

示例代码:

代码语言:javascript
复制
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());

                 }
                 
             });

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

发布于 2022-01-21 08:12:24

当我发布这篇文章时,我自己找到了答案。

所以基本上我做了这个:

代码语言:javascript
复制
            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版本:

代码语言:javascript
复制
                 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70798126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档