Golang
Golang gin Middleware中間件
我第一次接觸Middleware這個詞是在php laravel的時候,Middleware有人翻 中間件也有人翻中介軟體,常見的用途之一就是應用在身分驗證的功能,我們在特定route設定Middleware,此時的Middleware可以想像是進來之前的檢查哨,我們就不需要在一一自己設置,而是在route那邊處理。
如果是使用vscode的朋友,此時可以點Default,就會跳去該程式碼的function
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.POST("/", func(c *gin.Context) {
fmt.Println(c.GetPostFormArray("str1"))
})
r.Run(":8000")
}
這時候我們會看到Default的function如下
// Default returns an Engine instance with the Logger and Recovery middleware already attached.
func Default() *Engine {
debugPrintWARNINGDefault()
engine := New()
engine.Use(Logger(), Recovery())
return engine
}
所以我們可以得知,在不知不覺中,其實我們在使用gin.Default()返回時,就已經使用了Recovery和Logger這兩個Middleware。
package main
import (
"fmt"
"time"
"github.com/gin-gonic/gin"
)
func LoggerHandler() gin.HandlerFunc {
return func(c *gin.Context) {
t := time.Now()
fmt.Printf("gogo %v \n", t)
}
}
func main() {
r := gin.Default()
r.Use(LoggerHandler())
//註冊一個Middleware
r.GET("/", func(c *gin.Context) {
fmt.Println("HELLO")
})
r.Run(":8000")
}
這時候可以執行看看http://localhost:8000/
也確實看終端機輸出有print了~