ASP.NET Core 2.2 WebApi 系列【四】集成Swagger


Swagger

是一款自動生成在線接口文檔+功能測試功能軟件

一、安裝程序包

通過管理 NuGet 程序包安裝,搜索Swashbuckle.AspNetCore

二、配置 Swagger

將 Swagger 添加到 Startup.ConfigureServices 方法中的服務集合中:

            //注入Swagger服務
            services.AddSwaggerGen(c =>
            {
                    c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
            });

在 Startup.Configure 方法中,啟用中間件為生成的 JSON 文檔和 Swagger UI 提供服務

            //啟用Swagger服務
            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
                c.DefaultModelsExpandDepth(-1); //設置為 - 1 可不顯示models
                c.DocExpansion(DocExpansion.None); //設置為none可折疊所有方法
            });

 

運行項目,可在 http://localhost:<port>/swagger 瀏覽 API文檔,如下所示:

如果想把Swagger作為啟動頁面,可修改launchSettings.json,把  launchUrl設置為  swagger:

    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true, //是否在瀏覽器中啟動
      "launchUrl": "swagger", //在瀏覽器中啟動的相對URL
      "environmentVariables": { //將環境變量設置為鍵/值對
        "ASPNETCORE_ENVIRONMENT": "Development"
      }

 

所有的Controller 的方法都是可以在 UI 上面進行測試。點擊方法可以展開對應的區域,點擊【Try it out】→ 【輸入參數】→ 點擊【Execute】。

三、可擴展性

Swagger 文檔信息和描述

修改AddSwaggerGen 方法,用來添加文檔信息。例如:作者,版權,描述。

            services.AddSwaggerGen(option =>
            {
                option.SwaggerDoc("v1", new Info
                {
                    Version = "v1",
                    Title = "在線接口文檔",
                    Description = "一個簡單的例子",
                    Contact = new Contact { Name = "TengHao", Email = "tenghao510@qq.com" },
                    License = new License { Name = "博客地址", Url = "https://www.cnblogs.com/tenghao510/" }
                });
            });

 

下圖展示了 Swagger UI 顯示添加的版本信息。

XML注釋

【右鍵項目】→【屬性】→ 【生成】→ 【勾選XML 文檔文件】注意自己的路徑

修改AddSwaggerGen 方法。

備注:IncludeXmlComments方法中的includeControllerXmlComments參數控制是否顯示控制器注釋,默認是false。

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info
                {
                    Version = "v1",
                    Title = "在線接口文檔",
                    Description = "一個簡單的例子",
                    Contact = new Contact { Name = "TengHao", Email = "tenghao510@qq.com" },
                    License = new License { Name = "TengHao", Url = "https://www.cnblogs.com/tenghao510/" }
                });
                // 為 Swagger JSON and UI設置xml文檔注釋路徑
                var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//獲取應用程序所在目錄
                var xmlPath01 = Path.Combine(basePath, "NetCoreWebApi.xml");
                c.IncludeXmlComments(xmlPath01, true);
                var xmlPath = Path.Combine(basePath, "NetCoreWebApi.Model.xml");
                c.IncludeXmlComments(xmlPath);
            });

 

運行項目,再看看效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM