不知道有多少人和我一樣,想獲取當前webapi有多少個地址

獲取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,不清楚不同的版本會不會有差異

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章