全局中间件
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}