博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ABP理论学习之Web API控制器(新增)
阅读量:6159 次
发布时间:2019-06-21

本文共 1870 字,大约阅读时间需要 6 分钟。

本篇目录

介绍

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
_userRepository; public UsersController(IRepository
userRepository) { _userRepository = userRepository; } [UnitOfWork] public virtual List
Users(string filter) { var users = _userRepository .GetAll() .Where(u => u.UserName.StartsWith(filter)) .ToList(); //... }}

这里我们声明了UnitOfWork特性。因为仓储的 GetAll()方法返回了 IQueryable,而当它使用 ToList()方法(由于IQueryable的延迟执行)时需要一个打开的数据库连接,所以这里需要声明该特性。注意该action方法应该声明为virtual(否则拦截无法工作)。

请查看获取更多。

其他

你还可以使用预注入的 ,等基属性以及更多。

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

本文转自tkbSimplest博客园博客,原文链接:http://www.cnblogs.com/farb/p/ABPWebAPI.html,如需转载请自行联系原作者

你可能感兴趣的文章
检测oracle数据库坏块的方法
查看>>
SQL server 安装教程
查看>>
Linux下ftp和ssh详解
查看>>
跨站脚本功攻击,xss,一个简单的例子让你知道什么是xss攻击
查看>>
js时间和时间戳之间如何转换(汇总)
查看>>
js插件---图片懒加载echo.js结合 Amaze UI ScrollSpy 使用
查看>>
java中string和int的相互转换
查看>>
P1666 前缀单词
查看>>
HTML.2文本
查看>>
Ubuntu unity安装Indicator-Multiload
查看>>
解决Eclipse中新建jsp文件ISO8859-1 编码问题
查看>>
7.对象创建型模式-总结
查看>>
【论文阅读】Classification of breast cancer histology images using transfer learning
查看>>
移动端处理图片懒加载
查看>>
jQuery.on() 函数详解
查看>>
谈缓存和Redis
查看>>
【转】百度地图api,根据多点注标坐标范围计算地图缩放级别zoom自适应地图
查看>>
用户调研(补)
查看>>
ExtJS之开篇:我来了
查看>>
☆1018
查看>>