Web Api 控制器
Web Api 控制器
本节内容:
简介
通过Abp.Web.Api的nuget包,把ABP集成到Asp.net Web Api 控制器里。你可以像之前做的一样创建平常的Asp.net Web Api控制器,依赖注入会很好地为这些平常的ApiController工作,但你要把你的控制器继承于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、FeatureManager、FeatureChecker、LocalizationManager、Logger、CurrentUnitOfWork等基属性。
过滤
ABP为所有的Asp.net Web Api预置了一些过滤,它们被默认地添加到所有控制器的所有Action里。
审计日志
AbpApiAuditFilter用来集成到审计日志系统,它在默认情况下记录所有对所有Action请求(如果审计没有被禁用),你可以用Audited和DisableAuditing特性控制Action和控制器的审计日志。
授权
你为你的api控制器或Action使用AbpApiAuthorize特性,阻止未授权用户访问它们,例如:

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

你可以为Action或控制器定义AllowAnonymous特性,废止认证/授权。AbpApiController也定义了一个在定义里检查许可的快捷方法IsGranted。
更多信息查看授权文档。
防伪造过滤
AbpAntiForgeryApiFilter自动保护Asp.net Web Api的Action(包括动态Web Api)来自CSRF/XSRF的POST、PUT和DELETE请求攻击。更多信息查看CSRF文档。
工作单元
AbpApiUowFilter用来整合到工作单元系统,在一个Action执行前自动开始一个工作单元,并在Action执行结束后完成工作单元(如果没有异常抛出)。
你可为一个Action使用UnitOfWork特性,控制它的工作单元行为,你也可以在启动配置里为所有Action修改默认的工作单元特性。
结果包装和异常处理
当Web Api的Action成功执行后,ABP不会默认地自动包装它,但ABP会处理并包装异常,如有需要,你可以给Action和控制器添加WrapResult/DontWrapResult,你可以从启动配置里修改这个默认行为(使用Configuration.Modules.AbpWebApi()....)。关于结果包装的更多信息,查看AJAX文档。
结果缓存
ABP为Web Api请求响应里添加了Cache-Control头(no-cache,no-store),因此,它甚至会阻止浏览器对GET请求响应的缓存,不过可以通过配置这个行为。
验证
AbpApiValidationFilter自动检查ModelState.IsValid并在检测到非法时阻止Action执行。实现输入DTO的验证在验证文档里进行了描述。
模块绑定器
AbpApiDateTimeBinder用来标准化通过Clock.Normalize方法输入的DateTime(和Nullable<DateTime>)。
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 控制器创建过程(一) 前言 在前面对管道.路由有了基础的了解过后,本篇将带大家一起学习一下在ASP.NET Web API中控制器的创建过程,这过程分为几个部分下面的内 ...
- ABP文档 - Web Api 控制器
文档目录 本节内容: 简介 AbpApiController 基类 本地化 其它 过滤 审计日志 授权 防伪造过滤 工作单元 结果包装和异常处理 结果缓存 验证 模块绑定器 简介 通过Abp.Web. ...
- ABP理论学习之Web API控制器(新增)
返回总目录 本篇目录 介绍 AbpApiController基类 本地化 审计日志 授权 工作单元 其他 介绍 ABP通过Abp.Web.ApiNuget包集成了 ASP.NET Web API控制器 ...
- ABP官方文档翻译 5.1 Web API控制器
ASP.NET Web API控制器 介绍 AbpApiController基类 本地化 其他 过滤器 审计日志 授权 反伪造过滤器 工作单元 结果包装和异常处理 结果缓存 校验 模型绑定器 介绍 A ...
- asp.net web api 控制器
1控制器操作的参数 控制器操作的参数可以是内置类型也可以是自定义类型,无参也是允许的. 2控制器操作返回值 类型 说明 void 操作返回值为void时,Web API返回空HTTP响应,其状态码为2 ...
- POST多个参数到Web API控制器
交互基于Json的方式打包传递就不介绍了,主要设置请求头为 contentType: "application/json", //必须有 数据位Json格式的字符串,在服务器端定义 ...
- ASP.NET Core Web API 控制器与方法返回输出
DATA ACCESS LAYER 在一些不同的示例教程中,我们可能看到 DAL 的实现在主项目中,并且每个控制器中都有实例.我们不建议这么做. 当我们编写 DAL 时,我们应该将其作为一个独立的服务 ...
随机推荐
- [转]关于ASP.NET(C#)程序中TEXTBOX下动态DIV跟随[AJAX应用]
本文转自:http://blog.csdn.net/lolenboy/article/details/1665814 说明: 环境:ASPNET(c#),SQL2K 事例:TEXTBOX下跟随DIV, ...
- [未完成]关于SQL语句的总结
关于SQL语句的总结关于SQL语句的总结关于SQL语句的总结关于SQL语句的总结关于SQL语句的总结
- hdu1565 网络流或状态压缩DP
对于网络流有一个定理: 最小点权覆盖集=最大网络流: 最大点权独立集=总权值-最小点权覆盖集: 网络流解法代码如下: #include<cstdio> #include<iostre ...
- 本机连接虚拟机Oracle时报错的解决办法
虚拟机安装了Oracle服务器(桌面类)和客户端,里面使用plsql连接自己没有问题. 在本机连接虚拟机没有成功.虚拟机的地址是192.168.126.132,已经确认本机能ping通虚拟机. 先是报 ...
- 浅谈MapControl控件和PageLayoutControl控件
1.MapControl控件是ArcObject(ArcEngine)中使用非常普遍的一个控件,它对应ArcMap中的DataView视图.MapControl控件实现的功能: 1)管理控件的外观.显 ...
- 通过Bresenham算法实现完成矢量线性多边形向栅格数据的转化
1.实验目的与要求 目的:通过本次实验,完成矢量线性多边形向栅格数据的转化过程: 要求:采用VC++6.0实现. 2.实验方法 采用Bresenham算法实现 3.实验材料 直线的定义:y = x/3 ...
- Ehcache(2.9.x) - API Developer Guide, Cache Decorators
About Cache Decorators Ehcache uses the Ehcache interface, of which Cache is an implementation. It i ...
- ZooKeeper(3.4.5) - 配置伪集群模式
1. 准备 Java 运行环境,需要安装 Java1.6 或更高版本的 JDK. 2. 下载 ZooKeeper 的稳定版本 zookeeper-x.x.x.tar.gz,将其解压,约定目录名称为 % ...
- ASP.NET整理
Asp.net六大对象 1.Request-->读取客户端在Web请求期间发送的值 常用方法: 1.Request.UrlReferrer请求的来源,可以根据这个判断从百度搜的哪个关键词.防 ...
- 【Cocos2d入门教程六】Cocos2d-x事件篇之触摸
Cocos游戏当中产生一个事件时,可以有多个对象在监听该事件,所以有优先级(Priority).优先级越高(Priority值越小),事件响应越靠前. 关系图: 新 事件分发机制:在2.x 版本事件处 ...