ABP文档 - Web Api 控制器

2018-06-22 07:39:35来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

文档目录

 

本节内容:

  • 简介
  • AbpApiController 基类
    • 本地化
    • 其它
  • 过滤
    • 审计日志
    • 授权
    • 防伪造过滤 
    • 工作单元
    • 结果包装和异常处理
    • 结果缓存
    • 验证
  • 模块绑定器

 

简介

通过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>)。

 

kid1412附:英文原文:http://www.aspnetboilerplate.com/Pages/Documents/Web-API-Controllers

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:ASP.NET 文件上传的实现(Upload)

下一篇:ABP文档 - Hangfire 集成