beego的響應流程:session
1.監聽的端口接收數據,默認是8080端口。函數
2.用戶請求到達8080端口後,開始數據處理流程。code
3.初始化CONTEXT對象。判斷是不是WEBSOCKET請求,若是是,設置INPUT。同時,判斷請求的方法,是不是標準方法(GET、POST、PUT、DELETE、PATCH、OPTIONS、HEAD),以避免被惡意訪問。router
4.執行beforerouter過濾器。固然,在beego裏有開關設置,若是使用該過濾器,則必須打開這個開關。若是在執行過濾器的過程當中,responseWriter已經有數據了,則中斷這個過濾器的執行。直接調到監控診斷。對象
5.開始執行靜態文件的處理,拉進行匹配。,查看用戶的請求 URL 是否和註冊在靜態文件處理 StaticDir 中的 prefix 是否匹配。若是匹配的話,採用 http
包中默認的 ServeFile 來處理靜態文件。繼承
6.若是不是靜態文件,則初始化session模塊(若是開啓了session的話)。這裏就須要注意,只能在afterstatic的過濾其中使用session,若是是beforerouter過濾器,就會出錯進程
7.開始執行 AfterStatic 過濾器,若是在執行過濾器過程當中,responseWriter 已經有數據輸出了,那麼就提早結束該請求,直接跳轉到監控判斷。資源
8.執行過過濾器以後,開始從固定的路由規則中查找和請求 URL 相匹配的對象。這個匹配是全匹配規則,即若是用戶請求的 URL 是 /hello/world
,那麼固定規則中 /hello
是不會匹配的,只有徹底匹配纔算匹配。若是匹配的話就進入邏輯執行,若是不匹配進入下一環節的正則匹配。路由
9.正則匹配是進行正則的全匹配,這個正則是按照用戶添加 beego 路由順序來進行匹配的,也就是說,若是你在添加路由的時候你的順序影響你的匹配。和固定匹配同樣,若是匹配的話就進行邏輯執行,若是不匹配進入 Auto 匹配。it
10.若是用戶註冊了 AutoRouter,那麼會經過 controller/method
這樣的方式去查找對應的 Controller 和他內置的方法,若是找到就開始執行邏輯,若是找不到就跳轉到監控判斷。
11.若是找到 Controller 的話,那麼就開始執行邏輯,首先執行 BeforeExec 過濾器,若是在執行過濾器過程當中,responseWriter 已經有數據輸出了,那麼就提早結束該請求,直接跳轉到監控判斷。
12.Controller開始執行init函數。這個實際上就是cotroller本身的初始化。不建議在繼承的時候,修改這些東西。