ABP理论学习之Web API控制器(新增)
本篇目录
介绍###
ABP通过Abp.Web.ApiNuget包集成了 ASP.NET Web API控制器。你可以像以往创建Asp.Net Web API控制器那样创建Web API控制器。依赖注入对于有规律的ApiController(其实就是继承自AbpApiController的控制器)是有效的。
但是你应该从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");
//...
}
}
要使L方法生效,必须设置LocalizationSourceName。你可以在自己的api控制器基类中设置而不用在每个api控制器中都重复设置。
审计日志
审计日志不会为api控制器自动记录。如果你要为api控制器记录日志的话,应该在控制器或者它的action方法上声明Audited特性。请查看审计日志获取更多信息。
授权
你可以为api控制器或者action方法使用AbpApiAuthorize特性来阻止未授权的用户使用控制器和action方法。例子:
public class UsersController : AbpApiController
{
[AbpApiAuthorize("MyPermissionName")]
public UserDto Get(long id)
{
//...
}
}
AbpApiController也定义了检查权限的IsGranted方法作为快捷方式。请查看授权一节获取更多信息。
工作单元
Web API的action方法默认不是工作单元。例如,如果你需要在action方法中打开数据库连接,就需要像下面那样声明UnitOfWork特性:
public class UsersController : AbpApiController
{
private readonly IRepository<User, long> _userRepository;
public UsersController(IRepository<User, long> userRepository)
{
_userRepository = userRepository;
}
[UnitOfWork]
public virtual List<UserDto> Users(string filter)
{
var users = _userRepository
.GetAll()
.Where(u => u.UserName.StartsWith(filter))
.ToList();
//...
}
}
这里我们声明了UnitOfWork特性。因为仓储的 GetAll()方法返回了 IQueryable,而当它使用 ToList()方法(由于IQueryable的延迟执行)时需要一个打开的数据库连接,所以这里需要声明该特性。注意该action方法应该声明为virtual(否则拦截无法工作)。
请查看工作单元获取更多。
其他
你还可以使用预注入的 AbpSession, EventBus, PermissionManager, PermissionChecker, SettingManager, FeatureManager, FeatureChecker, LocalizationManager, Logger, CurrentUnitOfWork等基属性以及更多。
要了解以上属性,请查阅其他相应博客。
ABP理论学习之Web API控制器(新增)的更多相关文章
- ABP文档 - Web Api 控制器
文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web. ...
- ABP官方文档翻译 5.1 Web API控制器
ASP.NET Web API控制器 介绍 AbpApiController基类 本地化 其他 过滤器 审计日志 授权 反伪造过滤器 工作单元 结果包装和异常处理 结果缓存 校验 模型绑定器 介绍 A ...
- ABP框架 - 动态Web Api层
文档目录 本节内容: 创建动态Web Api控制器 ForAll 方法 重写 ForAll ForMethods Http 动词 WithVerb 方法 HTTP 特性 命名约定 Api 浏览器 Re ...
- DDD开发框架ABP之动态Web API层
建立动态Web API 控制器 ASP.NET Boilerplate 能够自动为您的应用层产生Web API层.比如说我们有如下的一个应用服务: public interface ITaskAppS ...
- Web Api 控制器
Web Api 控制器 文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简 ...
- ASP.NET Web API 控制器执行过程(一)
ASP.NET Web API 控制器执行过程(一) 前言 前面两篇讲解了控制器的创建过程,只是从框架源码的角度去简单的了解,在控制器创建过后所执行的过程也是尤为重要的,本篇就来简单的说明一下控制器在 ...
- ASP.NET Web API 控制器创建过程(二)
ASP.NET Web API 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病 ...
- ASP.NET Web API 控制器创建过程(一)
ASP.NET Web API 控制器创建过程(一) 前言 在前面对管道.路由有了基础的了解过后,本篇将带大家一起学习一下在ASP.NET Web API中控制器的创建过程,这过程分为几个部分下面的内 ...
- ABP理论学习之Javascript API(理论完结篇)
返回总目录 本篇目录 Ajax Notification Message UI block和busy 事件总线 Logging 其他工具功能 说在前面的话 不知不觉,我们送走了2015,同时迎来了20 ...
随机推荐
- B/S系统常见缺陷整理和解决方案
最近部门整理了今年所有项目测试团队提出的BUG,筛选了几十个作为常规通用的缺陷,我根据这些缺陷内容,去掉和业务相关的知识,整理出了一份缺陷描述和解决方案. 其实WEB系统中常规的缺陷分类后也就那么多, ...
- ROS学习(一)—— 环境搭建
一.配置Ubuntu软件仓库且选择ROS正确版本 二.添加source.list sudo sh -c 'echo "deb http://packages.ros.org/ros/ubun ...
- google开发者工具调试技巧
http://blog.sina.com.cn/s/blog_60a4fcef0102v3vt.html
- 自动滑动的banner图
实例: HTML页面: <div style="position: absolute; left: 0; top: 0; width: 100%; height: 100%; min- ...
- Android中Retrifit使用总结
Android中网络请求框架Retrofit的使用注意事项 1.Retrofit是基于OkHttp网络请求框架的二次封装而已,懂Okhttp的小伙伴,那么Retrofit也就基本都会. 2.Retro ...
- [资料分享]nutch视频教程
- Codeforces Round #377 (Div. 2)
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; in ...
- 爬虫研究-主要针对ali
公司一个同事想爬取ali的网页受挫,自己跟着尝试了下,发现存在anti-spdier.准备了解下反爬虫,看怎么处理ali. http://www.freebuf.com/news/topnews/96 ...
- HTML5 与 CSS3 jQuery部分知识总结
一. HTML5 为什么需要HTML5 什么是HTML5 HTML5现状及浏览器支持 HTML5优点与缺点 HTML5语法规则与文档声明 HTML5新增表达标签 HTML5多媒体组件 HTML5 ...
- 【BZOJ1497】[NOI2006]最大获利 最小割
裸的最小割,很经典的模型. 建图:要求总收益-总成本最大,那么将每条弧与源点相连,流量为成本,每个收益与汇点相连,流量为收益,然后每条弧与它所能到达的收益相连,流量为inf. 与源点相连的是未被选中的 ...