web api新增攔截器

王磊的部落格發表於2016-08-31

實現思路

1.標識控制器有攔截特性;

2.控制器攔截處理;

程式碼實現

1.標識控制器有攔截特性,程式碼:

[MyFilter]
public string PostFindUser([FromBody]Userinfo user)
{
    return string.Format("{0}是好人~", user.Name);
}

2.控制器攔截處理,程式碼:

public class MyFilter : ActionFilterAttribute
{

    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        base.OnActionExecuting(actionContext);
        //獲取請求引數
        WebApiTest.Controllers.Userinfo user = (WebApiTest.Controllers.Userinfo)actionContext.ActionArguments["user"];

        //TODO:業務判斷
        if (user.Name == "小明") //請求終止,進行調整或者內容輸出
        {
            //HttpContext.Current.Response.Redirect("~/home/index");
            HttpContext.Current.Response.Write("{\"id\":1,\"name\":\"小明\"}");
            //建立響應物件,初始化為成功,沒有指定的話本次請求將不會被攔截
            actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
        }
    }

}

 

相關文章