1.go可以构建中哈进件,但它只对注册过的路由函数起作用
2.对于分组路由,嵌套使用中间件,可以限定中间件的作用范围
3.中间件分为全局中间件,单个路由中间件和群组中间件
4.gin中间件必须是一个gin.HandlerFunc 类型
示例(全局、单个路由,组路由)
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"time"
)
//全局中间件
func middleFunc(c *gin.Context) {
t := time.Now()
fmt.Println("中间件开始")
//设置值
c.Set("request", "middle")
//指定函数,如果不写,默认最后执行函数
c.Next()
// 中间件执行完后续的一些事情
status := c.Writer.Status()
fmt.Println("中间件结束", status)
t2 := time.Since(t)
fmt.Println("time", t2)
}
func main() {
r := gin.Default()
r.Use(middleFunc)
r.GET("/middle", func(context *gin.Context) {
req, _ := context.Get("request")
fmt.Println("哈哈哈")
context.JSON(200, req)
})
//单个路由中间件使用
r.GET("/middle2", middleFunc, func(context *gin.Context) {
req, _ := context.Get("request")
fmt.Println("哈哈哈")
context.JSON(200, req)
})
//组中间件使用
v2:=r.Group("/v2",middleFunc)
{
v2.GET("/middle", func(context *gin.Context) {
req, _ := context.Get("request")
fmt.Println("哈哈哈")
context.JSON(200, req)
})
}
r.Run(":8080")
}