是一款自動生成在線接口文檔+功能測試功能軟件json
經過管理 NuGet 程序包安裝,搜索Swashbuckle.AspNetCore瀏覽器
將 Swagger 添加到 Startup.ConfigureServices 方法中的服務集合中:app
//注入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文檔,以下所示:spa
若是想把Swagger做爲啓動頁面,可修改launchSettings.json,把 launchUrl設置爲 swagger:code
"IIS Express": { "commandName": "IISExpress", "launchBrowser": true, //是否在瀏覽器中啓動 "launchUrl": "swagger", //在瀏覽器中啓動的相對URL "environmentVariables": { //將環境變量設置爲鍵/值對 "ASPNETCORE_ENVIRONMENT": "Development" }
全部的Controller 的方法都是能夠在 UI 上面進行測試。點擊方法能夠展開對應的區域,點擊【Try it out】→ 【輸入參數】→ 點擊【Execute】。xml
修改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 顯示添加的版本信息。blog
【右鍵項目】→【屬性】→ 【生成】→ 【勾選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); });
運行項目,再看看效果: