(五).NET Core中過濾器Filter的使用介紹

知識點回顧:編程

前面幾篇文章分別給你們介紹了app

(1)Swagger的集成和用法;框架

(2)JWT身份驗證的集成和用法;ide

(3)OOM框架AnutoMapper對象映射的用法;spa

今天給你們介紹過濾器Filter的基本使用:設計

過濾器有什麼做用,在什麼場景下適合用到它?日誌

假設一個項目進展到快結束的時候,項目leader爲了保證程序的穩定性和可監控和維護性要求將全部的方法加上日誌,若是項目比較龐大,方法很是多,那豈不是得費很大得勁來完成這樣一件事情。不過不用擔憂,咋們遇到的問題,偉大的語言設計者早已幫咱們想好了解決辦法過濾器,過濾器是一種AOP(面向切面編程)技術的體現,AOP具備鬆耦合,易擴展,代碼可複用的特色。code

一般咱們在這些場景下如身份驗證、日誌記錄、異常獲取等會使用到過濾器對象

.NET Core中的過濾器生命週期:blog

1.png

.NET Core中的過濾器有多種,今天給你們主要介紹ActionFilterAttribute的用法

(1)自定義一個Filter類:

` public class LogFilter: ActionFilterAttribute

{

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
        /* todo OnActionExecuting */
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        /* todo OnActionExecuted */
    }

    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        base.OnResultExecuting(filterContext);
        /* todo OnResultExecuting */
    }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        base.OnResultExecuted(filterContext);
        /* todo OnResultExecuted */
    }

}`

(2)註冊過濾器,註冊過濾器有兩種方式,一種是全局註冊,另外一種是局部註冊:
services.AddMvc(option => { option.Filters.Add(typeof(LogFilter)); }) //全局註冊過濾器

局部註冊,局部註冊能夠體如今類或方法上:
2.png

(3)運行,請求一個具體接口,跟蹤一下執行順序:

3.png4.png

能夠看到過濾器起到了對應的做用。

相關文章
相關標籤/搜索