Web API 控制器

介绍

ASP.NET Boilerplate通过Abp.Web.Api NuGet包集成到ASP.NET Web API控制器中。您可以像往常一样创建常规的ASP.NET Web API控制器。 依赖注入  适用于常规ApiControllers,但您应该从AbpApiController派生控制器,它提供了多种好处并更好地集成到ASP.NET Boilerplate中。

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为AspNet Web API定义了一些预构建的过滤器。默认情况下,所有这些操作都会添加到所有控制器的所有操作中

审计记录

AbpApiAuditFilter用于集成到  审计日志记录系统中默认情况下,它会将所有请求记录到所有操作(如果未禁用审核)。您可以使用操作和控制器的Audited和DisableAuditingattributes控制审核日志记录。

授权

您可以将app控制器或操作的AbpApiAuthorize属性用于防止未经授权的用户使用您的控制器和操作。例:

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

您可以为操作或控制器定义AllowAnonymous属性以禁止身份验证/授权。AbpApiController还将IsGranted方法定义为检查代码中权限的快捷方式。

有关 详细信息,请参阅  授权文档。 

防伪过滤器

AbpAntiForgeryApiFilter用于自动保护ASP.NET Web API操作免受CSRF / XSRF攻击(包括  动态Web api)(用于POST,PUT和DELETE请求)。有关 详细信息,请参阅  CSRF文档。 

工作单位

AbpApiUowFilter用于集成到  工作单元  系统中。它在操作执行之前自动开始一个新的工作单元,如果没有抛出异常,则在执行操作后完成工作单元。

您可以使用UnitOfWork属性来控制操作的UOW行为。您还可以使用启动配置更改所有操作的默认工作单元属性。

结果包装和异常处理

如果操作已成功执行,则ASP.NET Boilerplate默认情况下不会包装Web API操作。但是,它处理和包装异常。您可以将WrapResult / DontWrapResult属性添加到操作和控制器以进行更精细的控制。您可以从启动配置更改此默认行为   (使用Configuration.Modules.AbpWebApi()...)。 有关结果包装的更多信息,请参阅  AJAX文档。 

结果缓存

ASP.NET Boilerplate将Cache-Control标头(no-cache,no-store)添加到Web API请求的响应中。这样,即使对于GET请求,它也可以防止响应的浏览器缓存。可以通过配置禁用此行为。

验证

AbpApiValidationFilter会自动检查ModelState.IsValid并阻止执行该操作(如果它无效)。它还实现了模型绑定器中描述的输入DTO验证 

AbpApiDateTimeBinder 用于使用Clock.Normalize方法规范化DateTime(和Nullable <DateTime>)输入  

nidie.com.cn - 用心与你沟通