1. 全局中间件

  • 所有请求都经过此中间件
  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. status := c.Writer.Status()
  15. fmt.Println("中间件执行完毕", status)
  16. t2 := time.Since(t)
  17. fmt.Println("time:", t2)
  18. }
  19. }
  20. func main() {
  21. // 1.创建路由
  22. // 默认使用了2个中间件Logger(), Recovery()
  23. r := gin.Default()
  24. // 注册中间件
  25. r.Use(MiddleWare())
  26. // {}为了代码规范
  27. {
  28. r.GET("/ce", func(c *gin.Context) {
  29. // 取值
  30. req, _ := c.Get("request")
  31. fmt.Println("request:", req)
  32. // 页面接收
  33. c.JSON(200, gin.H{"request": req})
  34. })
  35. }
  36. r.Run()
  37. }

输出结果:

全局中间件 - 图1 全局中间件 - 图2

注意: 请注意黑色的数据里面有一步算时间差没有执行(需要学习Next就懂了)