首页 > 解决方案 > 获取 Swasbuckle 5 以输出 Swagger 2.0 Json 而不是 OpenAPI 3.0

问题描述

我已将 Swashbuckle 升级到第 5 版,一切都变得更好了。

现在我有一个问题,我的消费者需要 Swagger Json 格式作为 Swagger 2.0,而不是 Swashbuckle 5 中的默认值,它以 Openapi 3.0.1 格式输出 swagger。

我的配置如下:

    public static void ConfigureSwagger(SwaggerGenOptions c)
    {
        c.SwaggerDoc("v1", new OpenApiInfo
        {
            Title = "Gdpr Api",
            Version = "v1",
            Description ="This API is for GDPR ."
        });
        c.EnableAnnotations();
    }

    public static void ConfigureSwaggerUi(this IApplicationBuilder app)
    {
        app.UseSwagger();
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "GDPR - Version 1");
            c.DocumentTitle = "Gdpr Swagger";
        });
    }

标签: c#swaggeropenapi

解决方案


我认为这是不可能的,直到我发现您可以在 Helen 和RC4 发行说明的帮助下执行以下操作。解决方案是设置SerializeAsV2 = true.

    public static void ConfigureSwaggerUi(this IApplicationBuilder app)
    {
        app.UseSwagger(p => p.SerializeAsV2 = true);
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "GDPR - Version 1");
            c.DocumentTitle = "Gdpr Swagger";
        });
    }

这将以 2.0 格式输出 Swagger JSON。


推荐阅读