53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
//定义一个GIN中间件
|
||
|
|
||
|
func middleware() gin.HandlerFunc {
|
||
|
return func(c *gin.Context) {
|
||
|
t1 := time.Now()
|
||
|
fmt.Println("中间件开始执行了")
|
||
|
//设置变量到context的key中,可以通过GET取到
|
||
|
c.Set("request", "中间件")
|
||
|
//执行函数 拦截handler
|
||
|
c.Next()
|
||
|
status := c.Writer.Status()
|
||
|
fmt.Println("中间件执行完毕", status)
|
||
|
t2 := time.Since(t1)
|
||
|
fmt.Println("time: ", t2)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
//1.创建路由
|
||
|
r := gin.Default()
|
||
|
//注册中间件
|
||
|
r.Use(middleware())
|
||
|
//{}是为了代码规范
|
||
|
{
|
||
|
r.GET("/middleware", func(c *gin.Context) {
|
||
|
//取值
|
||
|
|
||
|
req, _ := c.Get("request")
|
||
|
fmt.Println("req:", req)
|
||
|
//页面接收
|
||
|
c.JSON(200, gin.H{"request": req})
|
||
|
})
|
||
|
//跟路由后面是定义的局部中间件
|
||
|
r.GET("/middleware2", middleware(), func(c *gin.Context) {
|
||
|
//取值
|
||
|
|
||
|
req, _ := c.Get("request")
|
||
|
fmt.Println("req:", req)
|
||
|
//页面接收
|
||
|
c.JSON(200, gin.H{"request": req})
|
||
|
})
|
||
|
}
|
||
|
r.Run(":8000")
|
||
|
}
|