func Logger() gin.HandlerFunc { return func(c *gin.Context) { t := time.Now() // 设置 example 变量 c.Set("example", "12345") // 请求前 c.Next() // 请求后 latency := time.Since(t) log.Print(latency) // 获取发送的 status status := c.Writer.Status() log.Println(status) } } func main() { r := gin.New() r.Use(Logger()) r.GET("/test", func(c *gin.Context) { example := c.MustGet("example").(string) // 打印:"12345" log.Println(example) }) // 监听并在 0.0.0.0:8080 上启动服务 r.Run(":8080") }这段代码什么意思
时间: 2024-04-18 11:29:55 浏览: 216
Golang-Gin框架示例二十多个源码
这段代码是一个使用Gin框架实现的简单日志中间件和路由处理的示例。
首先,定义了一个名为Logger的函数,它返回一个gin.HandlerFunc类型的函数。这个函数被用作中间件,在每个请求到达时被调用。在这个函数中,首先记录了当前时间,并将一个名为"example"的值设置到gin.Context中,然后执行c.Next()来继续处理后续的中间件和路由处理函数。在请求处理完成后,记录了请求处理的耗时和响应状态码。
接下来,在main函数中,创建了一个新的gin引擎实例r。通过调用r.Use(Logger())将Logger中间件添加到路由器中,使得每个请求都会经过该中间件的处理。
然后,定义了一个GET请求的路由处理函数,当访问"/test"时被调用。在该处理函数中,通过c.MustGet("example").(string)获取之前设置的"example"值,并将其打印出来。
最后,通过调用r.Run(":8080")来监听并启动服务,在本地的8080端口上提供服务。
总结起来,这段代码实现了一个简单的Gin应用,其中包含了一个记录请求日志的中间件和一个处理GET请求的路由处理函数。在中间件中记录了请求的耗时和响应状态码,在路由处理函数中获取并打印了之前设置的值。
阅读全文