記Asp.Net Core Swagger 使用 並帶域介面處理
引用作者原話:Asp.Net的WebApi中使用Swagger作為說明和測試的頁面是非常不錯的,比起WebApiTestClient來至少在介面上的很大的提升。但是使用Swagger時如果只是一般的控制器直接放到Controller下就可以了,而如果因不同的業務需求而需要分類或者有同名的類名時時則沒辦法很好的處理。
因為業務需求需要建立域,但是Swagger 並未將域新增到介面。所以需要加上以下操作才行。
安裝Swagger 方法:
為了大家多看微軟官方文件、就直接引用Swagger安裝及使用方法。 以下是微軟官方文件。
https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-2.1&tabs=visual-studio
增加域介面顯示方法:
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; } } }
通過介面描述擴充套件獲取區域及相關資訊進行改寫擴充套件。
使用說明:
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 = "[email protected]", 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的註釋,記得修改 });
紅色部分加入程式碼即可。
結果展示:
本文章參考 學而時習之進行 更改。 多謝!
作者:_學而時習之_
來源:CSDN
原文:https://blog.csdn.net/xxdddail/article/details/81868721
版權宣告:本文為博主原創文章,轉載請附上博文連結!