本节内容:
简介
通过 Abp.web.Api 的 nuget 包,把 ABP 集成到 Asp.net Web Api 控制器里。你可以像之前做的一样创建平常的 Asp.net Web Api 控制器,依赖注入会很好地为这些平常的 ApiController 工作,但你要把你的控制器继承于 AbpApiController,它提供了许多好处和更好地集成到 ABP。
AbpApiController 基类
这是一个简单的继承于 AbpApiController 的 api 控制器:
- public class UsersController: AbpApiController {}
本地化
AbpApiController 定义了 L 方法,使得变得更容易,如:
- public class UsersController: AbpApiController {
- public UsersController() {
- LocalizationSourceName = "MySourceName";
- }
- public UserDto Get(long id) {
- var helloWorldText = L("HelloWorld");
- //...
- }
- }
你先要设置 LocalizationSourceName,L 方法才能正确工作,你可以在你自己的基 api 控制器类里设置它,这样就不用再为每个 api 控制器重复设置。
其它
你可以使用预先注入的、、、、、、、等基属性。
过滤
ABP 为所有的 Asp.net Web Api 预置了一些过滤,它们被默认地添加到所有控制器的所有 Action 里。
审计日志
AbpApiAuditFilter 用来集成到,它在默认情况下记录所有对所有 Action 请求(如果审计没有被禁用),你可以用 Audited 和 DisableAuditing 特性控制 Action 和控制器的审计日志。
授权
你为你的 api 控制器或 Action 使用 AbpApiAuthorize 特性,阻止未授权用户访问它们,例如:
- public class UsersController: AbpApiController { [AbpApiAuthorize("MyPermissionName")] public UserDto Get(long id) {
- //...
- }
- }
你可以为 Action 或控制器定义 AllowAnonymous 特性,废止认证 / 授权。AbpApiController 也定义了一个在定义里检查许可的快捷方法 IsGranted。
更多信息查看文档。
防伪造过滤
AbpAntiForgeryApiFilter 自动保护 Asp.net Web Api 的 Action(包括)来自 CSRF/XSRF 的 POST、PUT 和 DELETE 请求攻击。更多信息查看。
工作单元
AbpApiUowFilter 用来整合到系统,在一个 Action 执行前自动开始一个工作单元,并在 Action 执行结束后完成工作单元(如果没有异常抛出)。
你可为一个 Action 使用 UnitOfWork 特性,控制它的工作单元行为,你也可以在启动配置里为所有 Action 修改默认的工作单元特性。
结果包装和异常处理
当 Web Api 的 Action 成功执行后,ABP 不会默认地自动包装它,但 ABP 会处理并包装异常,如有需要,你可以给 Action 和控制器添加 WrapResult/DontWrapResult,你可以从里修改这个默认行为(使用 Configuration.Modules.AbpWebApi()....)。关于结果包装的更多信息,查看。
结果缓存
ABP 为 Web Api 请求响应里添加了 Cache-Control 头(no-cache,no-store),因此,它甚至会阻止浏览器对 GET 请求响应的缓存,不过可以通过配置这个行为。
验证
AbpApiValidationFilter 自动检查 ModelState.IsValid 并在检测到非法时阻止 Action 执行。实现输入 DTO 的验证在里进行了描述。
模块绑定器
AbpApiDateTimeBinder 用来标准化通过 Clock.Normalize 方法输入的 DateTime(和 Nullable<DateTime>)。
来源: http://www.cnblogs.com/kid1412/p/6012020.html