Swagger 是一款自動生成線上介面文檔+功能測試功能軟體 一、安裝程式包 通過管理 NuGet 程式包安裝,搜索Swashbuckle.AspNetCore 二、配置 Swagger 將 Swagger 添加到 Startup.ConfigureServices 方法中的服務集合中: //註入S ...
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 = "[email protected]" }, 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 = "[email protected]" }, 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); });
運行項目,再看看效果: