ASP.NET Web API控制器

介绍

  ABP通过Abp.Web.Api nuget包集成到ASP.NET Web API控制器。你可以按照往常一样创建ASP.NET Web API控制器。依赖注入系统可以用于一般的ApiControllers。但是,建议继承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控制器里重复设置了。

其他

  你也可以使用预注入的AbpSession,EventBus,PermissionManager,PermissionChecker,

SettingManager,FeatureChecker,LocalizationManager,Logger,CurrentUnitOfWork基础属性等。

过滤器

  ABP为AspNet Web API定义了一些预生成的过滤器。他们默认添加到所有控制器的所有动作上。

审计日志

  AbpApiAuditFilter用来集成审计日志系统。它默认记录所有动作的请求(如果审计没有被禁用)。你可以使用Audited和DisableAuditing特性来控制动作和控制器。

授权

  你可以给控制器或动作使用AbpApiAuthorize特性来禁止未授权的用户使用你的控制器和动作。示例:

public class UsersController : AbpApiController
{
[AbpApiAuthorize("MyPermissionName")]
public UserDto Get(long id)
{
//...
}
}

  你可以为动作或控制器定义AllowAnoymous特性来禁用认证或授权。AbpApiController也定义了IsGranted方法作为在代码中检查权限的捷径。

  参见授权文档了解更多。

反伪造过滤器

  AbpAntiForgeryApiFilter用来自动保护ASP.NET Web API 的POST、PUT和DELETE请求动作免受CSRF/XSRF的攻击。参见CSRF文档了解更多。

工作单元

  AbpApiUowFilter用来集成工作单元系统。它在动作执行之前自动开始一个新的工作单元,并在动作执行结束之后完成工作单元(如果没有异常抛出)。

  你可以使用UnitOfWork特性来控制动作UOW的行为。你也可以使用启动配置来为所有的动改变默认的工作单元特性。

结果包装和异常处理

  如果动作成功完成,ASP.NET Boilerplate默认不包装Web API动作。但是它处理和包装异常。如果需要,你可以给动作或控制器添加WrapResult/DontWrapResult特性。你可以在启动配置里(使用Configuration.Modules.AbpWebApi()...)改变默认的行为。参见AJAX文档了解更多关于结果包装的信息。

结果缓存

  ABP为WebAPI请求的响应添加缓存控制header(no-cache,no-store)。因此,它阻止浏览器缓存相应,甚至GET请求也会被阻止缓存。可以在配置里禁用此功能。

校验

  AbpApiValidationFilter自动检查ModelState.IsValid,如果校验失败则阻止动作的执行。还实现了输入DTO的校验,如在校验文档中所描述。

模型绑定器

  AbpApiDateTimeBinder用来标准化DateTime(还有Nullable<DateTIme>)输入,使用Clock.Normalize方法。

返回主目录

ABP官方文档翻译 5.1 Web API控制器的更多相关文章

  1. ABP官方文档翻译 6.1.1 MVC控制器

    ASP.NET MVC控制器 介绍 AbpController基类 本地化 其他 过滤器 异常处理和结果包装 审计日志 验证 授权 工作单元 介绍 ABP通过Abp.Web.Mvc nuget包集成到 ...

  2. ABP官方文档翻译 6.6 Javascript API

    JavaScript API AJAX 通知 消息 UI Block和Busy 事件总线 日志 其他实用功能 ABP提供了一套对象和函数,用来简化.标准化javascript的开发. 这里是ABP提供 ...

  3. ABP文档 - Web Api 控制器

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

  4. Web Api 控制器

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

  5. ABP理论学习之Web API控制器(新增)

    返回总目录 本篇目录 介绍 AbpApiController基类 本地化 审计日志 授权 工作单元 其他 介绍 ABP通过Abp.Web.ApiNuget包集成了 ASP.NET Web API控制器 ...

  6. ABP官方文档翻译 5.2 动态We API层

    动态Web APID层 创建动态Web API控制器 ForAll方法 重写ForAll ForMethods Http动词 WithVerb方法 HTTP特性 命名约定 API管理器 RemoteS ...

  7. 动态We API(ABP官方文档翻译)

    动态Web API层 创建动态Web API控制器 ForAll方法 重写ForAll ForMethods Http动词 WithVerb方法 HTTP特性 命名约定 API管理器 RemoteSe ...

  8. ABP官方文档翻译 6.7 CSRF/XSRF保护

    CSRF/XSRF保护 介绍 HTTP动词 非浏览器客户端 ASP.NET MVC 特征 集成 布局视图 配置 ASP.NET Web API 特征 集成 集成到ASP.NET MVC客户端 集成到其 ...

  9. ABP官方文档翻译 6.1.3 异常处理

    处理异常 介绍 启用错误处理 Non-Ajax请求 显示异常 UserFriendlyException Error模型 AJAX请求 异常事件 介绍 此文档是与ASP.NET MVC和Web API ...

随机推荐

  1. BZOJ 3670: [Noi2014]动物园【KMP变形 】

    3670: [Noi2014]动物园 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2738  Solved: 1475[Submit][Status ...

  2. UVA10382-Watering Grass-贪心 NYOJ6-喷水装置(一)-贪心

    10382 - Watering Grass Time limit: 3.000 seconds n sprinklers are installed in a horizontal strip of ...

  3. hdu_1025(LIS Nlog(N)算法)

    题意:自己慢慢读吧.大概就是道路两边建路,给出建路需求,要求两条路不能有交叉,问最多可以建多少条路. 题解:一看数据范围500000,应该是dp,再画个图模拟一下,发现实质就是求最长上升子序列,很自然 ...

  4. hdu_1370Biorhythms(互素的中国剩余定理)

    Biorhythms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  5. 重新学习一次javascript;

    每次有项目的时候,总觉得自己什么都不会做,然后做的时候又很简单,一会就做完了,啪啪打脸: 每次别人问的时候,我知道怎么做,但是不知道具体原理,觉得瞬间low了: 想要好好的吧基础掌握一下: 这几天空闲 ...

  6. [高并发]抢红包设计(使用redis)

    假设一个需求,在某个预告活动中准备了10w个红包,100w人在某个时间点去开抢,每人只能抢1次,如何保证性能和准确性,下面我给出我的一个设计方案,抛砖引玉 分析瓶颈 查询用户是否已参与过活动 获取一个 ...

  7. 一步一步从原理跟我学邮件收取及发送 4.不同平台下的socket

    既然是面向程序员的文章那当然不能只说说原理,一定要有实际动手的操作.    其实作为我个人的经历来说,对于网络编程,这是最重要的一章! 作为一位混迹业内近20年的快退休的程序员,我学习过很多的开发语言 ...

  8. JavaScript八张思维导图—数组用法

    JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...

  9. JavaScrip 排序算法

    转自: http://blog.givebest.cn/javascript/2017/08/02/javascript-sorting-algorithms.html 基础构造函数 以下几种排序算法 ...

  10. Java高并发秒杀系统API之SSM框架集成swagger与AdminLTE

    初衷与整理描述 Java高并发秒杀系统API是来源于网上教程的一个Java项目,也是我接触Java的第一个项目.本来是一枚c#码农,公司计划部分业务转java,于是我利用业务时间自学Java才有了本文 ...