gin hook 案例
时间: 2023-08-16 20:03:28 浏览: 152
下面我举一个 gin hook 的例子,实现在请求结束后记录请求的响应时间。
```go
func main() {
r := gin.Default()
// 注册 gin hook
r.Use(responseTimeHook())
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run()
}
func responseTimeHook() gin.HandlerFunc {
return func(c *gin.Context) {
start := time.Now()
// 在请求处理完成后记录请求响应时间
c.Writer.Header().Set("X-Response-Time", time.Since(start).String())
}
}
```
在上面的例子中,我们在 gin 中注册了一个全局的 hook,也就是每个请求都会执行这个 hook。hook 的作用是在请求处理完成后记录请求响应时间,并将其添加到响应头中的 X-Response-Time 字段中。这个 hook 的实现很简单,只需要在请求处理前记录当前时间,然后在请求处理完成后计算时间差,即为请求响应时间。
阅读全文