Web Api的过滤器(Filter)使用的面向切面(Aspect Oriented Programming)的编程思想,该机制使得编程人员可以很方便的向Web Api的主逻辑中添加一些额外的逻辑,比如身份验证预授权、数据模型验证以及格式化异常处理等。
在实际编程实现中,过滤器其实就是作用于Web Api Controller的一个或多个Action之上的Attribute。以下是比较常用的可供实现自定义过滤器的接口和类。
| 接口 | 类 | 简介 |
|---|---|---|
| IActionFilter | ActionFilterAttribute | 向Action运行前后添加逻辑;其OnActionExecuting函数作用于Action运行前,OnActionExecuted函数作用于Action运行后 |
| IAuthenticationFilter | 在Action运行前对请求方进行身份验证 | |
| IAuthorizationFilter | AuthorizationFilterAttribute | 在Action运行前对请求方进行权限验证 |
| IExceptionFilter | ExceptionFilterAttribute | Action运行结束后进行异常捕获及处理 |
这些不同类型的过滤器的执行顺序如下图所示,用户可跟据业务逻辑需要在任意一个过滤函数中返回response,从而实现短路操作。对于用一类型的多个过滤器而言,其执行顺序取决于其被的添加顺序,且全局过滤器先于局部过滤器被执行。

如果希望做开发的过滤器作用于应用程序的所有Action之上,用户可以直接通过在WebApiConfig.cs中的Register函数中添加如下代码来实现。
config.Filters.Add(new YourFilter());
本文介绍了Web Api过滤器的面向切面编程思想,它用于添加额外逻辑如身份验证、数据验证和异常处理。过滤器是应用于Controller Action的Attribute,自定义过滤器可通过特定接口和类实现。执行顺序为:全局过滤器先于局部过滤器,同一类型过滤器按添加顺序执行,可在任一过滤器中返回响应以短路后续操作。要使过滤器全局生效,可在WebApiConfig.cs的Register函数中配置。
1081

被折叠的 条评论
为什么被折叠?



