GoWeb开发:008.Gin中间件

77 阅读1分钟

内置中间件

package main

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

func main() {
	// 新建一个没有任何默认中间件的路由
	r := gin.New()

	// 全局中间件
	// Logger 中间件将日志写入 gin.DefaultWriter,即使你将 GIN_MODE 设置为 release。
	// By default gin.DefaultWriter = os.Stdout
	r.Use(gin.Logger())

	// Recovery 中间件会 recover 任何 panic。如果有 panic 的话,会写入 500。
	r.Use(gin.Recovery())

	// 你可以为每个路由添加任意数量的中间件。
	r.GET("/ping", func(c *gin.Context) {
		c.String(200, "hello")
	})

	// 监听并在 0.0.0.0:8080 上启动服务
	r.Run(":8080")
}

gin.Default()默认添加了Logger(), Recovery()中间件

// Default returns an Engine instance with the Logger and Recovery middleware already attached.
func Default() *Engine {
	debugPrintWARNINGDefault()
	engine := New()
	engine.Use(Logger(), Recovery())
	return engine
}

自定义中间件

func MyLogger() gin.HandlerFunc {
	return func(c *gin.Context) {
		t := time.Now()
		// 请求前
		c.Next()
		// 请求后
		latency := time.Since(t)
		log.Printf("接口用时:%dNS", latency)
	}
}

全局开启:

//添加自定义中间件
r.Use(MyLogger())