gin 中间件介绍
Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等。即比如,如果访问一个网页的话,不管访问什么路径都需要进行登录,此时就需要为所有路径的处理函数进行统一一个中间件,Gin中的中间件必须是一个gin.HandlerFunc类型。
全局中间件
所有请求都经过此中间件
// 定义中间
func MiddleWare() gin.HandlerFunc {
return func(c *gin.Context) {
t := time.Now()
fmt.Println("中间件开始执行了")
// 设置变量到Context的key中,可以通过Get()取
c.Set("request", "中间件")
status := c.Writer.Status()
fmt.Println("中间件执行完毕", status)
t2 := time.Since(t)
fmt.Println("time:", t2)
}
}
Next()方法
Next应该只在中间件中使用。它在调用处理程序内部执行链中的挂起处理程序。
c.Next()会跳过当前中间件后续的逻辑,类似defer,最后再执行c.Next后面的逻辑,多个c.Next()谁在前面谁后执行,跟defer很像,类似先进后出的栈。
局部中间件
局部中间件就只有相对应的作用域中使用,只有相应路由请求才会使用到这个中间件。