这里的内容和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源码分析系列文章目录

你好,看到这我有一点疑问,我看到abp在添加各种拦截器的时候,这其中包括 uow拦截器、参数验证,等 ,开始感觉很一般的操作,之后我做了一个例子 写了一个普通的方法并在上边 添加 UnitOfWorkAttribute 的时候,发现没有被识别为一个工作单元 ,而这个方法的签名是 private ,接着我又测试 public 都不会成为一个工作单元 ,在测试 public virtual 的时候 就可以了。。
那么问题来了:所有的IApplicationService 服务的组件 里边的方法都没有 virtual 为什么可以被拦截 ?
求大神解惑~~

我知道了 ~~~~
public virtual method or interface method ~~~
thank u ~

【转】ABP源码分析三十六:ABP.Web.Api相关推荐

  1. ABP源码分析三十六:ABP.Web.Api

    这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...

  2. ABP源码分析三十:ABP.RedisCache

    ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...

  3. 【转】ABP源码分析三十:ABP.RedisCache

    ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...

  4. 【转】ABP源码分析三十八: ABP.Web.Api.OData

    如果对OData不熟悉的话可参考OData的初步认识一文以获取OData的一些初步知识. API.Odata 模块唯一用处就是提供了一个泛型版本的ODataController,实现了Controll ...

  5. ABP源码分析三十四:ABP.Web.Mvc

    ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...

  6. 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析

    动态WebAPI应该算是ABP中最Magic的功能之一了吧.开发人员无须定义继承自ApiController的类,只须重用Application Service中的类就可以对外提供WebAPI的功能, ...

  7. 【转】ABP源码分析三十四:ABP.Web.Mvc

    ABP.Web.Mvc模块主要完成两个任务: 第一,通过自定义的AbpController抽象基类封装ABP核心模块中的功能,以便利的方式提供给我们创建controller使用. 第二,一些常见的基础 ...

  8. 【转】ABP源码分析二十六:核心框架中的一些其他功能

    本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSess ...

  9. 【转】ABP源码分析四十六:ABP ZERO中的Ldap模块

    通过AD作为用户认证的数据源.整个管理用户认证逻辑就在LdapAuthenticationSource类中实现. LdapSettingProvider:定义LDAP的setting和提供Defaut ...

最新文章

  1. 深入理解 C 指针阅读笔记 -- 第四章
  2. 爬虫学习笔记(十五)——加密解密
  3. 浏览器API location
  4. 2022年最值得学习的 5 种编程语言,你有在学习吗?
  5. jstorm mysql_Jstorm+Spring+mybatis整合
  6. ASP.NET MVC 5 ABP DataTables (二)
  7. EDA技术实用教程 | 复习十四 | Quartus II工具的使用
  8. IBM 人工智能黑科技
  9. 阿里云DNS专家,手把手教你定位域名解析不生效
  10. SQL经典50查询语句(面试题)案例2
  11. 数据结构---散列表(哈希表)链地址法
  12. 多目标进化算法(MOEAs)概述
  13. 【valist】c语言可变参数宏
  14. 机器学习 | MATLAB实现BP神经网络newff参数设定(上)
  15. [转载] Java是剑客-飘逸;.NET是刀客-霸道 (一)
  16. 支付宝导出资金账单Python脚本文件Demo
  17. 石墨加工机器keyword
  18. 2022年省考各省报名考试时间
  19. 标准曲线制作、SEM检验、使用知识大全
  20. iStylePDF安全电子文档解决方案之评标报告专家签字

热门文章

  1. [NLP] 相对位置编码(二) Relative Positional Encodings - Transformer-XL
  2. Discuz3.3精仿小米风格整站模板制作——1、新建模板方案
  3. [LeetCode]Distinct Subsequences,解题报告
  4. 08-SSH综合案例:前台用户模块:注册页面的前台JS校验
  5. vs2013和vs2010的配置
  6. [dp]Leetcode 5. Longest Palindromic Substring
  7. [Leetcode][第718题][JAVA][最长重复子数组][动态规划][滑动窗口][暴力]
  8. java.util.stream_java.util.stream.Stream 接口中的常用方法
  9. php设置cookie值,PHP如何设置和取得Cookie值
  10. L2-002 链表去重 (25 分) 船新方法