獲取webapi有多少路由規則
獲取webapi有多少個接口
等等...........................................................
公司打算做一套權限系統,頁面調用的接口資源全部要打包,在前端填寫接口地址的時候想直接得到接口地址
用戶頁面,需要接口權限(用戶查詢,用戶狀態字典,等等接口)
在維護的時候url怎麼填寫,想做一個輸入框可以自動完成
-------------------------------------------------------
最開始想到的是swagger,因爲他的列表就是我想要的,但是看源代碼真的不擅長
還是想看了webapi提供的相關api去找,無果
百度,哈哈哈和我想要的結果完全不同的意思
無奈,應着頭皮去看源代碼,因爲swagger接口中是使用paths字段來存儲所有接口的,我也是搜索這個關鍵字,因爲從配置入我就沒看懂,還好找到了
swagger源代碼比較完善寫了很多判斷,我也是一行一行代碼刪除(嘿嘿沒有完全讀懂)最終得出了我想要的一個list
-------------------------------------------------------
[HttpGet("AAA")]
public IEnumerable<AppApiModel> AAA()
{
var _apiDescriptionsProvider = _serviceProvider.GetService<Microsoft.AspNetCore.Mvc.ApiExplorer.IApiDescriptionGroupCollectionProvider>();
var appApi2 = _apiDescriptionsProvider.ApiDescriptionGroups.Items
.SelectMany(group => group.Items)
.Select(p => new AppApiModel()
{
RelativePath = p.RelativePath,
HttpMethod = p.HttpMethod
}).OrderBy(p => p.RelativePath).ThenBy(p => p.HttpMethod);
return appApi2;
}
public class AppApiModel
{
public string RelativePath { get; set; }
public string HttpMethod { get; set; }
}
效果如下
注意有使用謂詞,所以同一個url不同謂詞是不同的接口
----------------------
我的是asp.net core 3.0,不清楚不同的版本會不會有差異