gin框架在 中间件 或 handler 中使用 goroutine
需要写一个中间件来投递请求日志,为了不影响响应效率,使用了协程方式,逻辑代码如下:
// 日志投递
func AddLogToOpdbLog() gin.HandlerFunc {
return func(c *gin.Context) {
go func() {
token := c.DefaultQuery("token", "")
// 投递日志操作
}()
c.Next()
}
}
首先,此中间放在最后的位置,确保最后被执行。
我使用的是postman发起的请求,使用的是form-data,参数是一样的,就是连续多点几次。
然而在测试的过程中,发现,偶尔无法从c中获取到请求参数。
将请求方式改成x-www-form-urlencoded,也是一样的。
从逻辑上来讲,中间件中的c已经是内核对参数解析完之后了
共有 0 条评论