天天看點

內建Swagger接口文檔分組配置.net core

(一)回顧:

上一篇為大家介紹了在.NET Core中如何內建Swagger的介紹,想想內建操作其實非常簡單便捷,實質就三個步驟:

(1)在項目中執行nuget指令,拉取Swagger包到項目:Install-package Swashbuckle.AspNetCore

(2)在ConfigureServices方法中新增如下代碼

#region Swagger
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info
        {
            Version = "v1.1.0",
            Title = "Swagger WebAPI",
            Description = "XXX項目API文檔",
            TermsOfService = "None",
            Contact = new Swashbuckle.AspNetCore.Swagger.Contact
            {
                Name = "XXX項目",
                Email = "[email protected]"
            ,
                Url = "https://www.cnblogs.com/NBIDataVis/"
            }
        });
        // 為 Swagger JSON and UI設定xml文檔注釋路徑
        var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
        var xmlPath = Path.Combine(basePath, "CoreWebAPI.xml");
        //如果需要顯示控制器注釋隻需将第二個參數設定為true
        c.IncludeXmlComments(xmlPath, true);
    });
#endregion
           

(3)在Configure方法中新增如下代碼

#region Swagger
    app.UseSwagger();
    app.UseSwaggerUI(c =>
    {
      c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiDocument V1");
    });
#endregion
           

(二)問題:

通常一個項目中有很多的功能子產品,每個功能子產品又可能對應很多的接口,如果所有的接口都在一個清單顯示,顯然是比較混亂的,不便于調用方閱讀和查找。

當然Swagger為我們已經考慮到了這一點,它能支援分組顯示,具體怎麼做呢,請看下面的配置:

(三)Swagger分組文檔配置:

(1)在ConfigureServices方法中新增如下代碼

#region Swagger
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info
        {
            Version = "v1.1.0",
            Title = "Swagger WebAPI",
            Description = "XXX項目API文檔",
            TermsOfService = "None",
            Contact = new Swashbuckle.AspNetCore.Swagger.Contact
            {
                Name = "XXX項目",
                Email = "[email protected]"
            ,
                Url = "https://www.cnblogs.com/NBIDataVis/"
            }
        });
        
        c.SwaggerDoc("User", new Info { Title = "使用者子產品", Version = "User" });   //分組顯示
        c.SwaggerDoc("Project", new Info { Title = "項目子產品", Version = "Project" });   //分組顯示

        var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
        var xmlPath = Path.Combine(basePath, "CoreWebAPI.xml");
        c.IncludeXmlComments(xmlPath, true);
    
    });
#endregion
           

(2)在Configure方法中新增如下代碼

#region Swagger
    app.UseSwagger();
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1");
        c.SwaggerEndpoint("/swagger/User/swagger.json", "使用者子產品");  //分組顯示
        c.SwaggerEndpoint("/swagger/Project/swagger.json", "項目子產品");  //分組顯示
    });
#endregion
           

(3)在Controller類上指定分組名:

內建Swagger接口文檔分組配置.net core

(4)看看運作效果:

內建Swagger接口文檔分組配置.net core

繼續閱讀