在ASP.NET中配置Swagger中间件

问题描述

我阅读了Add and configure Swagger middleware部分,并感到困惑,似乎只注册了Swagger(不是Open API):

public void ConfigureServices(IServiceCollection services)
{
    //...
    
    // Register the Swagger services
    services.AddSwaggerDocument();
}

但同时添加两个:

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles();

    // Register the Swagger generator and the Swagger UI middlewares
    app.USEOpenApi();
    app.UseSwaggerUi3(); 

    app.UseMvc();
}

但是在https://github.com/RicoSuter/NSwag的另一个示例中,它同时添加了两个。

因此,在这个场景中,我还应该在services.AddOpenApiDocument()块中添加ConfigureServices{}方法吗?或者,如果我使用它呢?

解决方法

Swagger也称为OpenAPI规范,它解决了为Web API生成帮助文档的问题。 Swagger项目已捐赠给OpenAPI项目,现在称为Open API。 这两个名称可以互换使用,但首选OpenAPI。

您无法添加services.AddOpenApiDocument(),这将导致重复。

除非要添加两个不同版本的文档,否则可以编写:

services.AddOpenApiDocument(document => document.DocumentName = "v1");
services.AddSwaggerDocument(document => document.DocumentName = "v2");

它们的效果是相同的。