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

时间:2022-09-14 10:52:33

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&period;1&period;1 MVC控制器

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

  2. ABP官方文档翻译 6&period;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&period;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&period;7 CSRF&sol;XSRF保护

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

  9. ABP官方文档翻译 6&period;1&period;3 异常处理

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

随机推荐

  1. Linux用户密码重置方法

    方法一: 启动时,随便按一个键,空格即可(不能是回车),让其停留在如下界面 按e编辑 在UTF-8后面添加init=/bin/sh init=/bin/sh 根据上面提示,按Ctrl+x启动得下图 输 ...

  2. Rhel6-heartbeat&plus;lvs配置文档

    系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.119 server19.example.com 192.168.12 ...

  3. HTML5小游戏UI美化版

    HTML5小游戏[是男人就下一百层]UI美化版 之前写的小游戏,要么就比较简单,要么就是比较难看,或者人物本身是不会动的. 结合了其它人的经验,研究了一下精灵运动,就写一个简单的小游戏来试一下. 介绍 ...

  4. 两行 CSS 代码实现 PNG 任意颜色赋色技术

    很久之前在张鑫旭大大的博客看到过一篇 PNG格式小图标的CSS任意颜色赋色技术,当时惊为天人,感慨还可以这样玩,私底下也曾多次想过有没有其他方法可以实现. 本方法与上面 ZXX 的方法及流传的使用 f ...

  5. 动态游标(例如表名作为参数)以及动态SQL分析

    表名作为参数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; T ...

  6. &period;net session 使用误区

    1. this.Session["username"] = null  HttpSessionState 内部使用 NameObjectCollection 类型的集合对象来存储用 ...

  7. Lucas卢卡斯定理

    当$p$为素数时 $$C_n^m\equiv C_{n/p}^{m/p}*C_{n\%p}^{m\%p}(mod\ p)$$ 设$n=s*p+q,m\equiv t*p+r(q,r<=p)$ 我 ...

  8. Shell中怎么获取当前日期和时间

    转载自:https://zhidao.baidu.com/question/627912810044012524.html 获得当天的日期 [root@master ~]# date +%Y-%m-% ...

  9. 4、CommonChunkPlugin提取公共js-提取多个

    cnpm install css-loader --save-dev    //css-loader 是将css打包进js cnpm install style-loader --save-dev   ...

  10. Elasticsearch技术解析与实战(三)文档的聚合

    1.计算每个tag下的商品数量 PUT /database/_mapping/product { "properties": { "tags": { &quot ...