GO语言Gin包 (中间件)
router := gin.Default()
/*
func Default() *Engine {
debugPrintWARNINGDefault()
engine := New()
engine.Use(Logger(), Recovery())
return engine
}
*/
Logger和 Recovery 就是两个中间件。
Logger 是对日志进行记录,而 Recovery 是对有 painc时, 进行 500 的错误处理
自定义中间件
- 中间件需要返回 gin.HandlerFunc 函数,所以定义返回函数。
- 中间件有个 Next 函数
- 定义的众多中间件,会形成一条中间件链,而通过 Next 函数来对后面的中间件进行执行。
package middleware
import (
"fmt"
"github.com/gin-gonic/gin"
"time"
)
func Logger() gin.HandlerFunc {
return func(context *gin.Context) {
//Request 请求
host := context.Request.Host
url := context.Request.URL
method := context.Request.Method
fmt.Printf("%s::%s \t %s \t %s ", time.Now().Format("2006-01-02 15:04:05"), host, url, method)
context.Next()
fmt.Println(context.Writer.Status())
}
}
全局中间件
router := gin.New()
// 添加自定义的 logger 中间件
router.Use(middleware.Logger(), gin.Recovery())
//middleware.Logger(), gin.Recovery()为自定义中间件
局部中间件
- 某些路由需要登录后才能访问,那么可以给这些路由进行授权管理
userRouter.GET("/profile/", middleware.Auth(), handler.UserProfile)
userRouter.POST("/update", middleware.Auth(), handler.UpdateUserProfile)
//middleware.Auth()为自定义中间件