获取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,不清楚不同的版本会不会有差异