第四章 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
视频教程:
- 元磁之力框架开源初心和框架设计介绍(上): 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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!