返回总目录


本篇目录

介绍###

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控制器(新增)的更多相关文章

  1. ABP文档 - Web Api 控制器

    文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web. ...

  2. ABP官方文档翻译 5.1 Web API控制器

    ASP.NET Web API控制器 介绍 AbpApiController基类 本地化 其他 过滤器 审计日志 授权 反伪造过滤器 工作单元 结果包装和异常处理 结果缓存 校验 模型绑定器 介绍 A ...

  3. ABP框架 - 动态Web Api层

    文档目录 本节内容: 创建动态Web Api控制器 ForAll 方法 重写 ForAll ForMethods Http 动词 WithVerb 方法 HTTP 特性 命名约定 Api 浏览器 Re ...

  4. DDD开发框架ABP之动态Web API层

    建立动态Web API 控制器 ASP.NET Boilerplate 能够自动为您的应用层产生Web API层.比如说我们有如下的一个应用服务: public interface ITaskAppS ...

  5. Web Api 控制器

    Web Api 控制器 文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简 ...

  6. ASP.NET Web API 控制器执行过程(一)

    ASP.NET Web API 控制器执行过程(一) 前言 前面两篇讲解了控制器的创建过程,只是从框架源码的角度去简单的了解,在控制器创建过后所执行的过程也是尤为重要的,本篇就来简单的说明一下控制器在 ...

  7. ASP.NET Web API 控制器创建过程(二)

    ASP.NET Web API 控制器创建过程(二) 前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病 ...

  8. ASP.NET Web API 控制器创建过程(一)

    ASP.NET Web API 控制器创建过程(一) 前言 在前面对管道.路由有了基础的了解过后,本篇将带大家一起学习一下在ASP.NET Web API中控制器的创建过程,这过程分为几个部分下面的内 ...

  9. ABP理论学习之Javascript API(理论完结篇)

    返回总目录 本篇目录 Ajax Notification Message UI block和busy 事件总线 Logging 其他工具功能 说在前面的话 不知不觉,我们送走了2015,同时迎来了20 ...

随机推荐

  1. Centos7 关闭防火墙(转)

    转载地址:http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html CentOS 7.0默认使用的是firewall作为防火墙 ...

  2. 闪回查询(SELECT AS OF)

    使用Flashback Query的场景包括如下: 摘自官档 Recovering lost data or undoing incorrect, committed changes. For exa ...

  3. 传参数应该用哪种形式——值、引用、指针?

    类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.c ...

  4. CozyRSS开发记录22-界面退化

    CozyRSS开发记录22-界面退化 1.问题1-HtmlTextBlock 找的这个HtmlTextBlock有很严重的bug,有时候显示不完全,有时候直接就崩了.然后看了下代码,完全是学生仔水平写 ...

  5. java接口

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  6. asterisk简单命令

    重启asterisk [root@EC2-V2 ~]# service asterisk restart 进入asterisk操作界面 [root@EC2-V2 ~]# asterisk -vvvr ...

  7. 获取系统中所有进程&线程信息

    读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...

  8. 关于SVN出现 svn working copy locked的原因及解决方法

    今天使用SVN时电脑卡住了,于是结束进程中断了SVN的操作,于是出现了如题问题, 产生这种情况大多是因为上次svn更新命令执行失败且被自动锁定了. 如果cleanup没有效果的话只好手动删除锁定文件. ...

  9. z-stack协议uart分析(DMA)

    1.从ZMain里面的main函数开始分析 2.进入int main( void ); HalDriverInit();   //硬件相关初始化,有DMA初始化和UART初始化 3.进入HalDriv ...

  10. css实现一行文字居中,多行文字居左

    第一种方法: <style> *{margin:0;padding:0;} .box{width:500px;height:300px;border:1px solid #000;text ...