Gin中间件作用
在请求进入路由后,回调函数前,对单一路由或路由组,做一些公共操作。比如登录认证、权限校验、数据分页、记录日志、耗时统计等
Gin中间件用法
为路由单独注册中间件
就是在单行路由组内,路径与回调函数间插入中间件函数名m1
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func Index(c *gin.Context) {
fmt.Println("index.....")
c.JSON(http.StatusOK, gin.H{
"msg": "index",
})
}
//定义一个中间件
func m1(c *gin.Context) {
fmt.Println("m1 in.........")
}
func main() {
r := gin.Default()
//m1处于Index函数的前面,请求来之后,先走m1,再走Index回调函数
r.GET("/index", m1, Index)
_ = r.Run()
}
为路由组注册中间件Use
为同一批某个group组下的路由添加中间件
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func Index(c *gin.Context) {
fmt.Println("index.....")
c.JSON(http.StatusOK, gin.H{
"msg": "index",
})
}
//定义一个中间件
func m1(c *gin.Context) {
fmt.Println("m1 in.........")
}
func main() {
r := gin.Default()
tmp := r.Group("/").Use(m1())
tmp.GET("/index", Index)
_ = r.Run()
}
单条路由内的中间件与路由组中间件的执行优先级
需独自尝试,留个小作业
关键字Next(),Abort()
next就是不再进行下面的代码,直接跳到下一个中间件或者是路径全部执行后,再回头来执行剩余代码
abort就是继续这次的代码,而且不再进行后面的中间件或者是路径了,只把这次的搞完。