在線文檔: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
視頻教程:
- 元磁之力框架開源初心和框架設計介紹(上): https://www.bilibili.com/video/BV1VM4y1G7hC/
- 元磁之力框架開源初心和框架設計介紹(下): https://www.bilibili.com/video/BV15h411s7w6/
- 元磁之力框架數據庫表和代碼生成使用教程實戰: https://www.bilibili.com/video/BV1oM4y137D5/
動態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)