gin实例--全局中间件(8)

1,774 阅读1分钟

源码

github.com/zsl10/gin-e…

实例

  • 代码
package main

import (
	"fmt"
	"time"

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

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

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

	}
	r.Run(":8080")
}
  • 运行
[GIN-debug] Listening and serving HTTP on :8080
中间件开始执行了
中间件执行完毕 200
time: 23.216µs
request: 中间件
[GIN] 2020/01/06 - 16:18:59 | 200 |     132.603µs |       127.0.0.1 | GET      /md1