第四章 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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM