https://www.cnblogs.com/chaselogs/p/9399526.html
// 中间件
func middleware() gin.HandlerFunc {
return func(c *gin.Context) {
t := time.Now()
c.Set("example", "123456")
// c.Next()后就执行真实的路由函数,路由执行完成之后接着走time.Since(t)
c.Next()
// 从time.Now()到目前为止过了多长时间
latency := time.Since(t)
log.Print("--", latency)
// gin设置响应头,设置跨域
c.Header("Access-Control-Allow-Origin", "*")
c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
c.Header("Access-Control-Allow-Headers", "Action, Module, X-PINGOTHER, Content-Type, Content-Disposition")
//设置中间件的响应头,路由的响应头可以在路由返回中设置,参考/ping
// c.Writer.WriteHeader(http.StatusMovedPermanently)
status := c.Writer.Status()
log.Println("==", status)
}
}
func middle(c *gin.Context) {
example := c.MustGet("example").(string)
log.Println(example)
}
func main() {
r := gin.Default()
//中间件,只有在中间件之后注册的路由才会走中间件
r.Use(middleware())
//http://localhost:8081/middle
r.GET("/middle", middle)
r.Run(":8081")
}