全局中间件

 1package main
 2
 3import (
 4    "fmt"
 5    "time"
 6
 7    "github.com/gin-gonic/gin"
 8)
 9
10// 定义中间
11func 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        status := c.Writer.Status()
18        fmt.Println("中间件执行完毕", status)
19        t2 := time.Since(t)
20        fmt.Println("time:", t2)
21    }
22}
23
24func main() {
25    // 1.创建路由
26    // 默认使用了2个中间件Logger(), Recovery()
27    r := gin.Default()
28    // 注册中间件
29    r.Use(MiddleWare())
30    // {}为了代码规范
31    {
32        r.GET("/ce", func(c *gin.Context) {
33            // 取值
34            req, _ := c.Get("request")
35            fmt.Println("request:", req)
36            // 页面接收
37            c.JSON(200, gin.H{"request": req})
38        })
39
40    }
41    r.Run()
42}

局部中间件

 1package main
 2
 3import (
 4    "fmt"
 5    "time"
 6
 7    "github.com/gin-gonic/gin"
 8)
 9
10// 定义中间
11func 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
27func main() {
28    // 1.创建路由
29    // 默认使用了2个中间件Logger(), Recovery()
30    r := gin.Default()
31    //局部中间键使用
32    r.GET("/ce", MiddleWare(), func(c *gin.Context) {
33        // 取值
34        req, _ := c.Get("request")
35        fmt.Println("request:", req)
36        // 页面接收
37        c.JSON(200, gin.H{"request": req})
38    })
39    r.Run()
40}