gin自定义中间件 代码 代码 go">package mainimport ("fmt""github.com/gin-gonic/gin""net/http""time" )// MyLogger 自定义中间件:方式二:通过定义函数,返回gin.HandlerFunc类型的函数,定义中间件 // type HandlerFunc func(*Context) func MyLogger() gin.HandlerFunc {return func(c *gin.Context) {fmt.Println("自定义中间件执行的逻辑")// 执行主体流程c.Next()} }func main() {/*gin自定义中间件*/r := gin.Default()// 自定义中间件,在gin的全局使用,// 自定义中间件:方式一:通过匿名函数定义中间件r.Use(func(c *gin.Context) {/* 如:统计请求执行时间 */// 获取当前时间t := time.Now()// 执行主体流程c.Next()end := time.Since(t)fmt.Printf("耗时:%v\n", end)// 获取响应的状态status := c.Writer.Status()fmt.Println("状态:", status)})// 配置请求路由r.GET("/ping", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"data": "pong",})})/*配置指定路由使用的中间件*/{// 配置define组的路由defineGroup := r.Group("/define")// 在组路由中使用自定义中间件(非全局),不会影响到其他路由,注意需要在配置组内路由前,进行中间件的配置,否则不会生效defineGroup.Use(MyLogger())// 配置组内路由defineGroup.GET("/haha", func(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"data": "haha",})})}// 运行gin_ = r.Run(":8082") }