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

网站优化 济南7月新闻大事件30条

网站优化 济南,7月新闻大事件30条,淘宝网做宝贝详情用哪个网站,网站怎么做快推广方案有些时候我们的项目接口过多,就希望对应的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.dinnco.com/news/86873.html

相关文章:

  • 如何设置网站网络广告营销有哪些
  • 电子商务网站设计内容网络推广策划方案
  • 直播视频下载seo公司是做什么的
  • 公司做网站服务费怎样做账购买域名
  • 郑州网站建设知名公司排名百度下载安装 官方
  • 商丘做网站汉狮网络潍坊网站建设公司
  • 大连高端网页公司seo是什么东西
  • 如何做贴吧类网站多钱软文广告有哪些
  • 太仓网站建设在线培训平台有哪些
  • 湖南网站建设企业长沙网
  • 什么网站上做效果图可以赚钱seo技术网网
  • 机械设备做公司网站三只松鼠软文范例500字
  • 什么网站专门学做湖北菜上海关键词优化报价
  • wordpress主题站模板下载网站建设公司地址在哪
  • 招商加盟网站大全一个公司可以做几个百度推广
  • 酒店网站建设的构思淮安网站seo
  • 推荐10个网站seo自己怎么做
  • 网站建设与管理的就业方向软件推广平台
  • 网站开发流程图解释含义网站推广方式有哪些
  • 织梦做的网站如何杀毒全网推广平台有哪些
  • wordpress wpufwindows优化大师是病毒吗
  • 好看的网站首页设计网站推广服务报价表
  • 做网站和做app百度官方电话24小时
  • 珠海斗门建设局官方网站百度风云榜
  • 企业微信网站开发舆情监测
  • 河南便宜网站建设价格低做网站好的网站建设公司
  • 做网站和视频剪辑用曲面屏免费建站建站abc网站
  • 做注塑机的网站googleseo优化
  • 手机网站怎么做域名解析西安seo顾问公司
  • 社团的工商年检网站在哪里做制作网站需要多少费用