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用来集成审计日志系统。它默认记录所有动作的请求(如果审计没有被禁用)。你可以使用AuditedDisableAuditing特性来控制动作和控制器。

授权

  你可以给控制器或动作使用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. ubuntu配置服务器apache

    在配置apache之前我们需要先配置好ubuntu中的网络,如果不太懂的话可以看看这我的这篇文章:配置ubuntu网络,里面详细的介绍了怎么配置ubuntu的网络. 1.安装apache服务器 sud ...

  2. [国嵌攻略][179][OpenSSL加密系统]

    未加密传输的安全弊端 如果在网络传输中没有加密,就是以明文传输.传输的数据可以被抓包软件直接截获,并能读取里面的数据. 加密基本原理 1.对称加密 2.非对称加密 2.1.公钥私钥 公钥和私密要配对. ...

  3. Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目

    前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+jenkins的持续集成环境,并构建了基于maven的项目.这一节,我们继续扩展功能,增加对Nodejs ...

  4. 详解用em替换px

    em 的实际大小是相对于其上下文的字体大小而言的.如果我们给<body>标签设置文字大小为 100%,给其他文字都使用相对单位 em,那这些文字都会受body 上的初始声明的影响.这样做的 ...

  5. WPF 实现新手指引功能 DEMO

    需求 1.接口化.其他人实现接口就行 2.动态定位到visualTree中任意控件位置,即随意只显示任何部位 3.指示文本控件和箭头控件随意更改(位置,大小,高度,偏移等基本属性) 4.抽出主题 [d ...

  6. 免费空间上的mysql数据库怎么连接?

    我申请了一个php的免费空间,空间有带mysql数据库,可是我不知道怎么连接. 平时在本地做php时我都是怎么连接的 可是现在到空间上了我就不知道怎么连接了.空间有提供phpmyadmin 会的教一下 ...

  7. SQL Server中字段类型对应的C#中的数据类型

      数据库  C#程序  int                int32  text string bigint int64 binary System.Byte[] bit Boolean cha ...

  8. SSH的jar包下载地址

    spring http://repo.spring.io/libs-release-local/org/springframework/spring/ 条理清晰的搭建SSH环境之添加所需jar包 ht ...

  9. DotNetCore 定时服务 HangFire

    最近在写一个Asp.net core 的项目,其中有用到定时任务,一开始准备要用Quartz.net.毕竟在Java中和.net framework中都表现突出. 但是看了一下Quartz.net 关 ...

  10. 爬虫利器BeautifulSoup模块使用

    一.简介 BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式,同时应用场景也是非常丰富,你可以使用 ...