返回总目录


本篇目录

  • 介绍
  • AbpApiController基类
    • 本地化
    • 审计日志
    • 授权
    • 工作单元
    • 其他

介绍

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等基属性以及更多。

要了解以上属性,请查阅其他相应博客。

转载于:https://www.cnblogs.com/farb/p/ABPWebAPI.html

ABP理论学习之Web API控制器(新增)相关推荐

  1. ABP文档 - Web Api 控制器

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

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

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

  3. Web Api控制器

    Web Api控制器 前言 一.Web应用程序项目 1.MVC控制器 (1)新增项目 (2)项目结构截图 (3)项目引用截图 (4)自带控制器代码及路由配置 (5)新增MVC控制器 2.Web API ...

  4. ASP.NET Web API 控制器创建过程

    前言 本来这篇随笔应该是在上周就该写出来发布的,由于身体跟不上节奏感冒发烧有心无力,这种天气感冒发烧生不如死,也真正的体会到了什么叫病来如山倒,病去如抽丝.这两天状态才好了一点,让我理解了什么才是革命 ...

  5. abp构建Web API服务

    构建动态Web API控制器 ABP可以自动地为应用层生成Web API 层.比如说我们之前创建的应用层: namespace Noah.ChargeStation.Application.Citie ...

  6. 【ASP.NET Web API教程】2.3.3 创建Admin控制器

    原文:[ASP.NET Web API教程]2.3.3 创建Admin控制器 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. Part 3 ...

  7. Web APi之控制器选择Action方法过程(九)

    前言 前面我们叙述了关于控制器创建的详细过程,在前面完成了对控制器的激活之后,就是根据控制器信息来查找匹配的Action方法,这就是本节要讲的内容.当请求过来时首先经过宿主处理管道然后进入Web AP ...

  8. ASP.NET MVC4中调用WEB API的四个方法

    当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强 ...

  9. ABP理论学习之工作单元(Unit of Work)

    本篇目录 公共连接和事务管理方法 ABP中的连接和事务管理 仓储类 应用服务 工作单元 工作单元详解 关闭工作单元 非事务的工作单元 工作单元方法调用其它 工作单元作用域 自动保存 IReposito ...

最新文章

  1. flink 本地_Flink原理Apache Flink漫谈系列 State
  2. Java黑皮书课后题第7章:**7.3(计算数字的出现次数)编写程序,读取1到100之间的整数,然后计算每个数出现的次数。假定输入0表示结束
  3. 某小型校园网规划与设计要点(课程报告)
  4. 使用TA-Lib在vn.trader上开发CTA交易策略
  5. 费诺码设计matlab,费诺编码的matlab实现.doc
  6. New Monday
  7. STM32——红外遥控器实验
  8. 独家对话 RT-Thread 创始人熊谱翔:国产操作系统厚积而薄发 | 人物志
  9. 2012-2013最新泰晤士报和QS世界大学排名前100名单对比
  10. Enterprise Architect Professional Edition
  11. Python下载库pip pygame
  12. 网页另存word分页
  13. Unity3D接入第三方插件之微信登录安卓SDK
  14. python批量改文件名,截取原文件名的一部分
  15. 全国计算机等级考试一级大纲,全国计算机等级考试大纲(一级WIN)
  16. 曾经的中国互联网:多少巨头销声匿迹
  17. SQL数据导入导出语句大全[英文部分比较全面]
  18. mysql serial 类型_Mysql自增类型serial
  19. 公司最实用的软件——综合办公管理系统
  20. 通配符的使用方法(初学)

热门文章

  1. python 0o_Python 中的比较:is 与 ==
  2. 渲染服务器位置,如何用服务器做渲染
  3. java分布式锁工具类_java 通过redis实现分布式锁
  4. dell服务器T100无法进入系统,DELL服务器开机Alert!Cover was previously removed F1
  5. python安装requests模块失败_No module named quot;Cryptoquot;,如何安装Python三方模块Crypto...
  6. leetcode226 反转二叉树
  7. ccpc河北大学生程序设计竞赛dp小总结
  8. cmake生成Win64位工程
  9. Ubuntu通过可视化界面配置 查找IP地址不存在的解决办法
  10. 使用引用的方式交换数据的数值