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

.net网站开发视频做分销的网站

.net网站开发视频,做分销的网站,泰安网站制作哪里有,php网站开发实例代码有些时候我们的项目接口过多,就希望对应的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.yayakq.cn/news/243287/

相关文章:

  • 深圳app设计网站建设有哪个网站可以学做吃的
  • php网站修改代码手机网站翻页效果
  • 衡阳网站建设步骤浙江网站怎么做推广
  • 网站开发的源码网站建设 锋云科技公司
  • 武功网站建设网站主办者和所有者区别
  • 网站空间 .de沾益住房和城乡建设局网站
  • 南昌哪里可以做电商网站杭州百度百科
  • 联合易网北京网站建设公司怎么样centum wordpress
  • 如何解决网站兼容性问题沈阳网站设计开发公司
  • 余姚住房和建设局网站织梦网站如何上传
  • 江苏弘仁建设有限公司网站安徽省建设工程信息网招标公告
  • 手机wap网站制作免费住房与城乡建设部网站职责
  • 青岛网站建设王道下拉強电影的网络营销方式
  • 深圳 网站开发网业升级坊问
  • 网站建设与维护典型案例wordpress主题 uifun
  • 做网站接私活静态动漫网站模板
  • 小说网站建设后如何赚钱上海工业网站建设
  • 网站右边悬浮代码伍佰亿网站系统
  • 如何在阿里巴巴建设网站不花钱的网站建设
  • 网站建设技术服务费怎么入账大连网站开发培训
  • 微信 网站界面 模板网站建设行业分析
  • cdn网站网络加速器避免视觉效果混淆
  • 网站自动推广软件一级造价工程师成绩查询
  • 手机制作网站开发沈阳市住房和城乡建设局网站首页
  • 河南金建建设有限公司网站如何使用wordpress主题
  • 旅游网站logoqq群推广网站免费
  • 公司网站建设推广方案WordPress图片一行多张
  • 口碑好的网站开发公司电话jsp网站开发的参考文献
  • wordpress网站被镜像wordpress排版教程视频
  • 网站的图片怎么更换学电脑培训班