ABP源码分析三十六:ABP.Web.Api
这里的内容和ABP 动态webapi没有关系。除了动态webapi,ABP必然是支持使用传统的webApi。ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net webApi。
AbpApiController:这是一个抽象基类,继承自ApiController,是AB WebApi系统中所有controller的基类。如下图中,其封装了ABP核心模块中提供的大多数的功能对象。同时实现了一些公共的方法。它有四个派生类:DynamicApiController<T>,TypeScriptController,AbpCacheController,AbpServiceProxiesController。
ApiControllerConventionalRegistrar:所有AbpApiController的派生类都被register到ABP系统的容器中
HttpParameterBindingExtensions:HttpParameterBinding类的扩展方法,用于判断方法参数是否从URI取值。
AbpApiAuthorizeAttribute:实现了IAbpAuthorizeAttribute,继承ASP.NET 的AuthorizeAttribute。其封装了Permissions和RequireAllPermissions用于配置权限,其重写了IsAuthorized的方法用于实现ABP的授权校验逻辑。
AbpRemoteCallException:继承AbpException。用于封装ABP webapi返回给客户端(C#)的Exception.
IAbpWebApiClient:定义了访问ABP webAPI的接口。
AbpWebApiClient:实现了IAbpWebApiClient中定义的访问ABP webapi的方法。其内部通过封装HttpClient来访问webapi,然后根据远程API的response返回相应的结果给客户端。
以下两个方法用于将CLR对象转换为json对象,或者将Json对象转换为CLR对象。这边定义的将CLR对象转换为Json对象方法似乎多余了,因为作者已经在ABP核心框架中定义了一个object的扩展方法将CLR对象转换为Json对象。
AbpCacheController : 继承自AbpApiController,用于清理缓存(clear 和 ClearAll)。
ClearAllCacheModel : 只有一个password 属性。
ClearCacheModel:有一个password 属性和一个待清空的cache's name数组
ClearCacheSettingProvider:注意清理缓存的方法会先检验密码,清除缓存的密码是以setting配置到ABP中的。ClearCacheSettingProvider为该设置提供了一个初始密码,密码是硬编码到代码中的,如下图:
也就是你可以用这个密码清空任何套用ABP模板开发的站点(没有重新设置这个密码)的缓存。这里建议你到web.config中重置这个密码。
WrapResultAttribute:该特性用于标注webApi如何封装response.比如WrapOnError表示将错误信息封装到response返回到客户端。LogError标识将错误信息log到日志中。
HttpActionDescriptorHelper:通过action的HttpActionDescriptor来获取controller或action的WrapResultAttribute。
AbpExceptionFilterAttribute:继承自ExceptionFilterAttribute,重写OnException,以实现自定义的ExceptionFilter:根据action上标注的wrapResult来判断是否要log或通过eventbus触发事件
DynamicApiClientBuilder,IApiClientBuilder<TService>,ApiClientBuilder<TService>,DynamicApiClientBuilder:未实现,暂时忽略。
HttpVerbExtensions:HttpVerb的扩展方法,用于和httpmethod的比较。
返回ABP源码分析系列文章目录
转载于:https://www.cnblogs.com/1zhk/p/5426295.html
ABP源码分析三十六:ABP.Web.Api相关推荐
- 【转】ABP源码分析三十六:ABP.Web.Api
这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...
- ABP源码分析三十:ABP.RedisCache
ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...
- 【转】ABP源码分析三十:ABP.RedisCache
ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...
- 【转】ABP源码分析三十八: ABP.Web.Api.OData
如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...
- ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析
动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...
- 【转】ABP源码分析三十四:ABP.Web.Mvc
ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...
- 【转】ABP源码分析二十六:核心框架中的一些其他功能
本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSess ...
- 【转】ABP源码分析四十六:ABP ZERO中的Ldap模块
通过AD作为用户认证的数据源.整个管理用户认证逻辑就在LdapAuthenticationSource类中实现. LdapSettingProvider:定义LDAP的setting和提供Defaut ...
最新文章
- angularjs和mysql_AngularJS SQL
- 零知识证明实践教程,第二部分
- mysql删除root用户密码_MySQL忘记密码 或者误删除root用户有效解决办法
- 2018python好找工作吗-2018年 Python面试必看的10个问题及答案
- 【Linux 内核 内存管理】内存管理架构 ④ ( 内存分配系统调用过程 | 用户层 malloc free | 系统调用层 brk mmap | 内核层 kmalloc | 内存管理流程 )
- 上网速度快的浏览器_2020年浏览器国内市场占有率排行榜
- chmod 文件夹及子文件夹_了解linux文件属性之chgrp,chown,chmod
- form表单图片预览 layui_layui 实现图片上传和预览
- Exception: SQLSTATE[22001]
- 嵌入式linux 零基础-实践起步 --- 003 --- 交叉编译中环境变量PATH的设定
- 微信商品详细信息页面html,微信小程序商品展示页面(仿咸鱼)
- MFC中控件的大小和位置自定义代码
- ucc编译器(语义分析)
- 基于Gsoap 的ONVIF C++ 库
- 第五章项目整体管理重点--转载
- easyui菜单 java_EasyUI:主界面以及菜单功能
- java 数组排序 Arrays.sort()用法
- SpringBoot调优
- 阿里 vs. 腾讯,谁的收购更有眼光?
- 《Java解惑》系列——01表达式之谜——谜题09:半斤
热门文章
- python描述器 有限状态机_笨办法学 Python · 续 练习 30:有限状态机
- android证书别名,android – 了解密钥库,证书和别名
- 网站底部添加访客阅读次数总访问量在线人数代码
- ssg国际数字货币商城源码货币商城+数字货币+双端APP
- 站长工具箱浏览器插件-SEO分析效率工具插件
- ASP.NET MVC4实现TinyMCE 4.0.20自定义上传功能
- ECSHOP 如何去掉配送区域
- win7中安装vs2008的升级成正式版的方法
- sqlserver 常用存储过程集锦
- 通过RSS订阅、邮件转发自动同步多个Blog