zoukankan      html  css  js  c++  java
  • 第四章 Net 5.0 快速开发框架 YC.Boilerplate-- 动态WebApi

    在线文档:http://doc.yc-l.com/#/README
    在线演示地址:http://yc.yc-l.com/#/login
    源码github:https://github.com/linbin524/yc.boilerplate
    源码gitee:https://gitee.com/linxuanming/yc.boilerplate
    元磁之力框架技术群QQ:1060819005

    视频教程:

    动态WebApi

    动态WebApi介绍

    YC.DynamicWebApi 是基于Panda.DynamicWebApi 开源项目集成,并进行定制化修改组件,动态WebApi受启发于开源 ABP项目。它可以根据符合条件的类来生成WebApi,由MVC框架直接调用逻辑,无性能问题,完美兼容Swagger来构建API说明文档,与手动编写Controller相比并无区别。

    应用场景:DDD架构中的应用逻辑层,可使用本组件来直接生成WebApi,而无需再用Controller来调用。

    拓展 NoDynamicMethodAttribute

    拓展不映射方法,解决所有的方法默认被映射

            /// <summary>
            /// //不映射指定的方法
            /// </summary>
            /// <param name="action"></param>
            /// <returns></returns>
            private bool CheckNoMapMethod(ActionModel action)
            {
                bool isExist = false;
                var noMapMethod = ReflectionHelper.GetSingleAttributeOrDefault<NoDynamicMethodAttribute>(action.ActionMethod);
    
                if (noMapMethod != null)
                {
                    action.ApiExplorer.IsVisible = false;//对应的Api不映射
                    isExist = true;
                }
    
                return isExist;
            }
    
    在相关调用部分改造代码,部分如下:
     if (!CheckNoMapMethod(action))
          ConfigureApiExplorer(action);
    

    作者提交PR记录:


    Panda.DynamicWebApi 开源项目说明文档地址:点我跳转


    改造方式

    默认支持谓词,但不删除前缀

    DynamicWebApiConvention.cs 文件的GetRestFulActionName(string actionName) 方法中,将删除前缀方式剔除,只是剔除Async 和AppService 等后缀。

     // Remove Prefix
    //var verbKey = actionName.GetPascalOrCamelCaseFirstWord().ToLower();
    
    

    使用教程

    在Service 层业务接口继承IDynamicWebApi 并标注特性

    只要有继承IApplicationService 接口的业务Service 就默认可以进行动态WebApi的映射

        [DynamicWebApi]
        public interface IApplicationService: IDynamicWebApi
    

    不映射webApi的方式

    在指定的方法上加入[NoDynamicMethod] 特性,就可以让对应的方法不映射为api

     [NoDynamicMethod]
    public LoginDto Login(string userId, string pwd, int tenantId = 1)
    
    笔者原创!如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,转载请添加原博客连接,否则保留追究法律责任的权利,谢谢! YC.Boilerplate 快速开发框架交流,请加群:1060819005 区块链交流请加QQ群:538327407(已满),群2:135019400. 我的博客地址:http://www.cnblogs.com/linbin524/
  • 相关阅读:
    适配器
    适配器
    哈希容器
    迭代器
    redis介绍
    9内核同步介绍
    Redis基础数据结构
    springCloud-Eureka源码分析
    zookeeper伪分布式集群环境搭建
    消息队列核心-如何保证消息不丢失
  • 原文地址:https://www.cnblogs.com/linbin524/p/15210241.html
Copyright © 2011-2022 走看看