引用做者原話:Asp.Net的WebApi中使用Swagger做爲說明和測試的頁面是很是不錯的,比起WebApiTestClient來至少在界面上的很大的提高。可是使用Swagger時若是隻是通常的控制器直接放到Controller下就能夠了,而若是因不一樣的業務需求而須要分類或者有同名的類名時時則沒辦法很好的處理。api
由於業務需求須要建立域,可是Swagger 並未將域添加到接口。因此須要加上如下操做才行。visual-studio
安裝Swagger 方法:測試
爲了你們多看微軟官方文檔、就直接引用Swagger安裝及使用方法。 如下是微軟官方文檔。this
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-2.1&tabs=visual-studiospa
增長域接口顯示方法:.net
using Microsoft.AspNetCore.Mvc.ApiExplorer; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace System.Web.Http.Description { /// <summary> /// API描述器擴展 /// </summary> public static class ApiDescriptionExtension { /// <summary> /// 獲取區域名稱 /// </summary> /// <param name="description"></param> /// <returns></returns> public static List<string> GetAreaName(this ApiDescription description) { string areaName = description.ActionDescriptor.RouteValues["area"]; string controlName = description.ActionDescriptor.RouteValues["controller"]; List<string> areaList = new List<string>(); areaList.Add(controlName); if (!string.IsNullOrEmpty(areaName)) { description.RelativePath = $"{areaName}/{controlName}/{description.RelativePath}"; } return areaList; } } }
經過接口描述擴展獲取區域及相關信息進行改寫擴展。code
使用說明:orm
services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Swashbuckle.AspNetCore.Swagger.Info { Version = "v1.0.0", Title = " API", Description = description, TermsOfService = "你的公司", Contact = new Swashbuckle.AspNetCore.Swagger.Contact { Name = "Blog.Core", Email = "Blog.Core@xxx.com", Url = "https://www.jianshu.com/u/94102b59cc2a" } }); //使用域描述 c.TagActionsBy(apiDesc => apiDesc.GetAreaName()); var basePath = PlatformServices.Default.Application.ApplicationBasePath; var xmlPath = Path.Combine(basePath, xmlName);//這個就是剛剛配置的xml文件名 c.IncludeXmlComments(xmlPath, true);//默認的第二個參數是false,這個是controller的註釋,記得修改 });
紅色部分加入代碼便可。xml
結果展現:blog