是否可以使用 ASP .NET Core 中的 Swashbuckle 以 Swagger 2.0 和 Open API 3 格式公开相同的 Swagger JSON?

Dmi*_* S. 5 asp.net-core swashbuckle.aspnetcore

我们有一个旧应用程序仅适用于 Swagger 2.0 JSON 格式。对于其他一切,我们希望使用开放 API 格式。

Swashbuckle .NET Core 是否有任何方法可以在单独的 URL 下以不同格式公开 JSON?看起来方法选项SerializeAsV2中的属性UseSwagger对于所有端点都是全局的。

基本上我希望有以下端点,其中包含不同格式的相同 API 数据。

/swagger/v1/openapi/swagger.json
/swagger/v1/swagger2/swagger.json
Run Code Online (Sandbox Code Playgroud)

abd*_*sco 6

另一种方法是拆分请求管道:

// serve v3 from /swagger/v1/swagger.json
app.UseSwagger(o => o.RouteTemplate = "swagger/{documentName}/swagger.json");

// serve v2 from /swagger2/v1/swagger.json
app.Map("/swagger2", swaggerApp => 
    swaggerApp.UseSwagger(options => {
        // note the dropped prefix "swagger/"
        options.RouteTemplate = "{documentName}/swagger.json";
        options.SerializeAsV2 = true;
    })
);
Run Code Online (Sandbox Code Playgroud)