当前位置: 首页 > news >正文

重庆建网站多少钱网络广告人社区官网

重庆建网站多少钱,网络广告人社区官网,网站seo排名查询,专业做生鲜的网站好有些时候我们的项目接口过多,就希望对应的swagger能够执行分组,网络上的几乎是千篇一律的分组方法,会累死! 这里提供一个更加高效的分组方法,比如你可以说哪些模块分到哪个组,哪些权限分到哪个组&#xff…

有些时候我们的项目接口过多,就希望对应的swagger能够执行分组,网络上的几乎是千篇一律的分组方法,会累死!

这里提供一个更加高效的分组方法,比如你可以说哪些模块分到哪个组,哪些权限分到哪个组!

先上代码:

                    //添加文档options.SwaggerDoc("v1", new OpenApiInfo { Title = "基础的接口", Version = "v1" });options.SwaggerDoc("open", new OpenApiInfo { Title = "公开的接口", Version = "open" });options.SwaggerDoc("role", new OpenApiInfo { Title = "需要登陆的接口", Version = "role" });options.DocInclusionPredicate((doc, api) =>{if (!api.TryGetMethodInfo(out System.Reflection.MethodInfo method)){Console.WriteLine("not method!");return false;}//路径过滤,有时候我们基于其他模块的,可以基于路径屏蔽//return (description.RelativePath.Contains("/app/") || description.RelativePath.Contains("/plan/"));//查找Method的 也就是Action的var _api0 = method.GetCustomAttributes(true).OfType<TypeFilterAttribute>().ToList();foreach (var item in _api0){if (item.ImplementationType == typeof(RoleAttribute)){return doc == "role";}//item.Arguments //这个就是过滤器的参数了}//查找外部的 也就是Controller的if (method.ReflectedType != null){var _apix = method.ReflectedType.GetCustomAttributes(true).OfType<TypeFilterAttribute>().ToList();foreach (var item in _apix){if (item.ImplementationType == typeof(RoleAttribute)){return doc == "role";}}}//查找不是通过TypeFilter安装过滤器的var _api1 = method.GetCustomAttributes(true).OfType<RoleAttribute>().Count();if (_api1 > 0){return doc == "role";}if(doc == "role") { return false; }if(doc == "open") { return true; }//v1全部显示return doc == "v1";});

上面中,RoleAttribute是我自定义的过滤器,用于校验权限的,就是当前登陆者拥有哪些权限,我们一般用2个地方添加过滤器,一个是添加到Controller上,他的所有Action都会生效这个过滤器,一个是直接在Action上添加过滤器,其实还有一个是全局注入,不过我觉得那个很少用。

带参形式的过滤器

        [HttpPost][TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "root", "root" })]public async Task<string> AddChat(ChatItemAddDto input){return "发布成功";}

不带参数的过滤器

        [HttpPost][RoleAttribute]public async Task<string> ReadMessage(int roomid = 0, int uid = 0){return "";}

直接加入Controller里面的,他下面的所有Action都生效

    [ApiController][Route("/api/app/[controller]/[action]")][TypeFilter(typeof(RoleAttribute), Arguments = new object[] { "data", "add" })]public class WorkerController : IBaseController{[HttpPost]public async Task<int> AddNeedWorker(NeedWorkerAddDto input){// ...return 1;}}

上面的文档判断其实还是有待改进的地方,不过留给大家自己折腾,毕竟需求不一样!

你可以按照过滤器的参数划分分组,也可以按照不同过滤器划分分组!

最后启用UI,代码如下

            app.UseAbpSwaggerUI(options =>{options.SwaggerEndpoint("/swagger/v1/swagger.json", "Support APP API");options.SwaggerEndpoint("/swagger/open/swagger.json", "公开的接口");options.SwaggerEndpoint("/swagger/role/swagger.json", "需要登陆的接口");//options.DocExpansion(DocExpansion.None);//是否展开或者收缩});

看别人的都是通过

        [ApiExplorerSettings(GroupName ="v1")]

来划分的,虽然灵活,但是累啊!都已经用权限拆分了,还折腾这个分组干嘛呢!

http://www.ds6.com.cn/news/32431.html

相关文章:

  • 可以直接玩游戏的网站怎么自己开发网站
  • 神农架网站建设公司提高基层治理效能
  • 自建网站做外贸谷歌推广网站建设的流程是什么
  • 做网站用什么配置的笔记本给你一个网站seo如何做
  • 网站空间的根目录seo网络推广案例
  • WordPress编辑器复制doc慧达seo免登录发布
  • 中国与俄罗斯最新局势手机优化软件排行
  • 郑州网站制作十年乐云seo软文代写发布
  • 龙岗在线网站建设找资源最好的是哪个软件
  • 广州建盏工程设计有限公司网页怎么优化
  • 东莞市建设局门户网站提高百度搜索排名
  • 网站设计师网站小说排行榜百度搜索风云榜
  • 小网站靠什么挣钱哪里有永久免费建站
  • 免费分销系统关键词优化是什么意思?
  • 苏州电子商务网站开发公司哪些行业适合做seo
  • 新手公司网页设计模板汕头网站快速优化排名
  • 网站制作出租百度推广开户费用多少
  • 崇文手机网站建设网络推广的细节
  • 自适应网站三套代码给网站做seo的价格
  • 做网站广告送报纸广告2021年度关键词有哪些
  • 网站建设微信运营公司企业网站设计
  • 沈阳网站seo外包2345浏览器网站进入
  • 水泥制品做阿里巴巴还是网站好电商网站建设公司哪家好
  • 医院网站开发百度文库外包公司是正规公司吗
  • 织梦网站上传及安装步骤外贸建站优化
  • 怎么查看网站有没有做ssl专业网站建设公司
  • 查看网站主机百度热搜榜历史
  • 河北省企业网站建设公司百度知道提问首页
  • 先申请网站空间互联网广告平台排名
  • 做兼职拍照片传网站网站推广优化