不知道有多少人和我一样,想获取当前webapi有多少个地址

本文介绍了一种在ASP.NET Core 3.0中自动化获取所有API接口的方法,通过解析Swagger源代码,实现了接口资源的自动填充,简化了前端开发过程中接口地址的维护工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值