第四章 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)
posted @ 2021-08-31 14:37  linbin524  阅读(366)  评论(0编辑  收藏  举报