全局中间件

  • 所有请求都经过此中间件 ```go package main

import ( “fmt” “time”

  1. "github.com/gin-gonic/gin"

)

// 定义中间 func MiddleWare() gin.HandlerFunc { return func(c *gin.Context) { t := time.Now() fmt.Println(“中间件开始执行了”) // 设置变量到Context的key中,可以通过Get()取 c.Set(“request”, “中间件”) // 执行函数 c.Next() // 中间件执行完后续的一些事情 status := c.Writer.Status() fmt.Println(“中间件执行完毕”, status) t2 := time.Since(t) fmt.Println(“time:”, t2) } }

func main() { // 1.创建路由 // 默认使用了2个中间件Logger(), Recovery() r := gin.Default() // 注册中间件 r.Use(MiddleWare()) // {}为了代码规范 { r.GET(“/ce”, func(c *gin.Context) { // 取值 req, _ := c.Get(“request”) fmt.Println(“request:”, req) // 页面接收 c.JSON(200, gin.H{“request”: req}) })

  1. }
  2. r.Run()

}

  1. <a name="ZSAZO"></a>
  2. #### 局部中间件
  3. ```go
  4. package main
  5. import (
  6. "fmt"
  7. "time"
  8. "github.com/gin-gonic/gin"
  9. )
  10. // 定义中间
  11. func MiddleWare() gin.HandlerFunc {
  12. return func(c *gin.Context) {
  13. t := time.Now()
  14. fmt.Println("中间件开始执行了")
  15. // 设置变量到Context的key中,可以通过Get()取
  16. c.Set("request", "中间件")
  17. // 执行函数
  18. c.Next()
  19. // 中间件执行完后续的一些事情
  20. status := c.Writer.Status()
  21. fmt.Println("中间件执行完毕", status)
  22. t2 := time.Since(t)
  23. fmt.Println("time:", t2)
  24. }
  25. }
  26. func main() {
  27. // 1.创建路由
  28. // 默认使用了2个中间件Logger(), Recovery()
  29. r := gin.Default()
  30. //局部中间键使用
  31. r.GET("/ce", MiddleWare(), 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. r.Run()
  39. }