WebApi 提供两种过滤器的类型:

1、ActionFilterAttribute

2、exceptionFilterAttribute

两个类都是抽象类,ActionFilter 主要实现执行请求方法体之前(覆盖基类方法:OnActionExecuting),和之后的事件处理(覆盖基类方法:OnActionExecuted)。exceptionFilter 主要实现出发异常方法(覆盖基类方法:OnException)。

过滤器在实际项目中都会经常使用到,例如:日志、安全验证、全局错误处理等。

下面写一个小例子:

1、新建ActionFilterAttribute:

public class ActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
{
base.OnActionExecuting(actionContext);
//获取请求消息提数据
Stream stream = actionContext.Request.Content.ReadAsStreamAsync().Result;
Encoding encoding = Encoding.UTF8;
stream.Position = ;
string responseData = "";
using (StreamReader reader = new StreamReader(stream, encoding))
{
responseData = reader.ReadToEnd().ToString();
}
//反序列化进行处理
var serialize = new JavaScriptSerializer();
var obj = serialize.Deserialize<RequestDTO>(responseData);
//在action执行前终止请求时,应该使用填充方法Response,将不返回action方法体。
if (obj == null)
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.OK, obj); if (string.IsNullOrEmpty(obj.PhoneType) || string.IsNullOrEmpty(obj.PhoneVersion)
|| string.IsNullOrEmpty(obj.PhoneID) || obj.StartCity < )
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.OK, obj);
}
}
}

2、在Api控制器的Action方法上加上[过滤器类],例如:[Filter.ActionFilter]

public class Mobile450Controller : ApiController
{
private DoWork450Invoke _DoWork = new DoWork450Invoke(); [Uzai.Mobile.Filter.ActionFilter]
[HttpPost]
public RepProductTopicsList GetRecmdProductTopicsList(ReqProductTopicsList reqDTO)
{
return _DoWork.GetRecmdProductTopicsList(reqDTO);
} }

以后会慢慢完善这篇文章,WebApi 的简单的例子,网上也不少,但是设计深入开发和实际应用的少之又少,这方面的书籍也不多,大家可以上MSDN上寻求自己的答案。

Web API Filter ActionFilterAttribute 使用的更多相关文章

  1. WEB API Filter的使用以及执行顺序

    在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行过程拦截处理.引入了这一机制可以更好地践行DRY(Don’t Repeat Yourself)思想 ...

  2. Web API Filter

    在Web Api中,有三种Filter Filter类型 实现的接口 描述 Authorization IAuthorizationFilter 最先运行的Filter,被用作请求权限校验 Actio ...

  3. .NetCore Web Api 利用ActionFilterAttribute统一接口返回值格式

    .Net Core 同 Asp.Net MVC一样有几种过滤器,这里不再赘述每个过滤器的执行顺序与作用. 在实际项目开发过程中,统一API返回值格式对前端或第三方调用将是非常必要的,在.NetCore ...

  4. MVC和Web API 过滤器Filter

    MVC和Web API Filter(过滤器) ASP.NET MVC 支持以下类型的操作筛选器: ·        授权筛选器.这些筛选器用于实现IAuthorizationFilter和做出关于是 ...

  5. [Web API] 如何让 Web API 统一回传格式以及例外处理[转]

    [Web API] 如何让 Web API 统一回传格式以及例外处理 前言 当我们在开发 Web API 时,一般的情况下每个 API 回传的数据型态或格式都不尽相同,如果你的项目从头到尾都是由你一个 ...

  6. [Web API] 如何让 Web API 统一回传格式以及例外处理

    [Web API] 如何让 Web API 统一回传格式以及例外处理 前言 当我们在开发 Web API 时,一般的情况下每个 API 回传的数据型态或格式都不尽相同,如果你的项目从头到尾都是由你一个 ...

  7. ASP.NET Web API之消息[拦截]处理

    标题相当难取,内容也许和您想的不一样,而且网上已经有很多这方面的资料了,我不过是在实践过程中作下记录.废话少说,直接开始. Exception 当服务端抛出未处理异常时,most exceptions ...

  8. ASP.NET Web API之消息[拦截]处理(转)

    出处:http://www.cnblogs.com/Leo_wl/p/3238719.html 标题相当难取,内容也许和您想的不一样,而且网上已经有很多这方面的资料了,我不过是在实践过程中作下记录.废 ...

  9. web api 开发之 filter

     1.使用filter之前应该知道的(不知道也无所谓,哈哈!) 谈到filter 不得不先了解下aop(Aspect Oriented Programming)面向切面的编程.(度娘上关于aop一大堆 ...

随机推荐

  1. Windbg用法详解

    工作空间 WinDBG的工作空间中保存了以下几种信息 调试会话状态: 包括断点,打开的源文件,用户定义的别名(alias)等. 调试器设置:包括符号文件路径,可执行映像文件路径,源文件路径,用I+/I ...

  2. fsfds

    ccc fs -fsd fsdfsfs

  3. 记录自己在使用Bootstrap中的心得

    一.网格系统 在做CRM OP后台时,直接在前人的的一些页面上进行了修改和增加,发现一些东西增加字段后有问题,比如网格系统,怎么改样式都不对,最后自己没法发,做成了半响应式的了.今天重新看Bootst ...

  4. 爱上MVC3系列~监视Action的运行时间,并提供超时记录机制

    回到目录 文章出现的原因 很久没写关于MVC的文章了,原因是将关注点移向了MVVM和DDD这边,而这篇文章完全是因为公司项目的需要,因为公司网站总是不定时的502,而这由可能是程序超时所引起的,为了分 ...

  5. Nodejs·网络服务

    本章是从NodeJS拥有的模块角度,讲述了网络服务中的应用: net ----- > TCP dgram --> UDP http -----> HTTP https ----> ...

  6. mysql 的简单优化

    合理的建立索引的建议: (1)  越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间,处理起来更快. (2)  简单的数据类型更好:整型数据比起字符,处理开销更小,因 ...

  7. mybatis多对多映射

    数据库里面有角色实体类app_cms_role

  8. HTML5横竖屏提示

    HTML代码: <div class="screen-prompt"></div> CSS判断代码: /*横竖屏提示*/ @media screen and ...

  9. Zepto中文API

    原文地址:http://zeptojs.com/ 译文地址:http://www.html-5.cn/Manual/Zepto/ Zepto是一个轻量级的针对现代高级浏览器的JavaScript库,  ...

  10. 理论到实践,A/B测试不得不直面的4个统计学问题

    有放回?无放回? 从总体中随机抽取一个容量为n的样本,当样本容量 n足够大(通常要求n ≥30)时,无论总体是否符合正态分布,样本均值都会趋于正态分布.期望和总体相同,方差为总体的1/n.这即是中心极 ...