1. package main
    2. import (
    3. "fmt"
    4. "time"
    5. "github.com/gin-gonic/gin"
    6. )
    7. // 定义中间
    8. func MiddleWare() gin.HandlerFunc {
    9. return func(c *gin.Context) {
    10. t := time.Now()
    11. fmt.Println("中间件开始执行了")
    12. // 设置变量到Context的key中,可以通过Get()取
    13. c.Set("request", "中间件")
    14. // 执行函数
    15. c.Next()
    16. // 中间件执行完后续的一些事情
    17. status := c.Writer.Status()
    18. fmt.Println("中间件执行完毕", status)
    19. t2 := time.Since(t)
    20. fmt.Println("time:", t2)
    21. }
    22. }
    23. func main() {
    24. // 1.创建路由
    25. // 默认使用了2个中间件Logger(), Recovery()
    26. r := gin.Default()
    27. // 注册中间件
    28. r.Use(MiddleWare())
    29. // {}为了代码规范
    30. {
    31. r.GET("/ce", func(c *gin.Context) {
    32. // 取值
    33. req, _ := c.Get("request")
    34. fmt.Println("request:", req)
    35. // 页面接收
    36. c.JSON(200, gin.H{"request": req})
    37. })
    38. }
    39. r.Run()
    40. }

    输出结果:
    Next()方法 - 图1
    Next()方法 - 图2