1、gin
1.1、gin框架路由是怎么處理的
在 Gin 中,路由是通過 gin.Default() 或 gin.New() 創建的 *gin.Engine 對象來管理的。gin.Default() 是 gin.New() 的一個封裝,它在創建路由對象時會自動添加一個默認的中間件(如日志記錄、恢復中間件等)。
流程
1. 接收請求:當一個 HTTP 請求到來時,Gin 會先解析請求的 URL 和 HTTP 方法。
2. 遍歷路由樹:Gin 會遍歷路由樹,并根據請求的 URL 和 HTTP 方法在樹中尋找匹配的路由規則。
3. 執行匹配的處理函數:一旦找到匹配的路由,Gin 會執行該路由對應的處理函數(Handler)。
4. 執行中間件:如果配置了中間件,Gin 會按順序執行中間件。中間件可以在路由處理函數之前、之后進行操作。
1.2、gin框架panic后怎么為什么沒有中止程序,怎么實現的
Gin 的恢復中間件 (gin.Recovery()) 用于捕獲和恢復 panic,防止程序崩潰。
r := gin.New()
r.Use(gin.Recovery()) // 手動啟用恢復中間件
它的底層實現利用了 Go 的 defer、recover 和 panic 機制來捕獲應用中的異常,防止 panic 導致程序崩潰。