史上最詳細的 Gin 中間件使用教程

在本文中,我們將深入討論 Go-Gin 的中間件,詳細瞭解它們呈現如何有效地在任何特定的 Web 應用程序中插播操作。此外,我們還將瀏覽一些示例,幫助大家更好地理解。

什麼是中間件?

在討論 Gin 中間件之前,首先我們需要明確中間件的概念。中間件基本上是一個函數,它在您的應用程序收到請求和發送響應之間插播處理。在實際開發中,中間件被廣泛用於處理如日誌記錄、身份驗證、會話管理等方面。

Gin 中間件

Gin 框架的中間件是處理 HTTP 請求期間執行的一段代碼,其中一些代碼在請求被路由到實際處理函數之前執行,另一些則在處理函數返回之後執行。

這是其基本的結構:

func (c *gin.Context) HandlerFunc {
// Code to execute before the controller
}

創建自定義的中間件

讓我們創建一個簡單的登錄驗證的中間件,若驗證成功,中間件將設置一個 "user" 的鍵,值爲用戶的姓名。若驗證失敗,則請求不會進入下一個處理函數。

func AuthRequired() gin.HandlerFunc {
    return func(c *gin.Context) {
        token := c.GetHeader("Authorization")
        if token != "Bearer Token" {
            c.JSON(401, gin.H{"error""Authorization Required"})
            c.Abort()
            return
        }

        c.Set("user""John Doe")
        c.Next()
    }
}

在上面的代碼中,c.Abort()的作用是阻止請求進一步執行。c.Set()設置特定的鍵值對,之後這對鍵值對可在後續的處理函數中通過c.Get()來獲取。gin.HandlerFunc 是一種特殊的類型,它代表一個能夠作爲中間件使用的函數的簽名。

應用中間件

要在 HTTP 請求的處理鏈中使用中間件,您需要使用 Use() 函數。這是一個使用我們的 AuthRequired 中間件的示例。

func main() {
    r := gin.Default()
    r.Use(AuthRequired())
    r.GET("/secure", func(c *gin.Context) {
        user, _ := c.Get("user")
        c.JSON(200, gin.H{"user": user})
    })
    r.Run()
}

在上述代碼中,Use() 函數添加了 AuthRequired 中間件到處理鏈中。當 /secure 路由被針對的時候,請求首先會被 AuthRequired 中間件處理,如果鑑權通過,則會調用路由的處理函數。

結論

Gin 框架的中間件是一種用於處理 HTTP 請求的強大功能。通過了解和使用中間件,你可以提高代碼的可複用性和項目的可維護性。希望本篇文章能幫助你理解和使用 Gin 框架的中間件。歡迎大家閱讀和分享本篇文章。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/g4YyCIL1sIQptmr-WfSR4A