美文网首页Golang相关
gin定制自己的context

gin定制自己的context

作者: AlberLiu | 来源:发表于2018-11-16 17:35 被阅读0次

    在使用gin时,如果想在context中保存一些变量,比如用户的id,通常的做法是放到context的Keys变量中,这样做的话,我们每次取的时候,都得进行类型转化。
    我习惯的做法是,定义自己的context,再在context中定义自己想要保存的变量,就像下面这样。

    type context struct {
        *gin.Context
        userId   int64 // 用户id
    }
    

    然后定义handler

    func do(c *context) {
        fmt.Println(c.userId)
    }
    

    然后,怎样把它注册进Engine里面呢,这里还需要一个函数进行处理一下

    type HandlerFunc func(*context)
    
    func handler(handler HandlerFunc) gin.HandlerFunc {
        return func(c *gin.Context) {
            context := new(context)
            context.Context = c
            if userId, ok := c.Keys[keyUserId]; ok {
                context.userId = userId.(int64)
            }
            handler(context)
        }
    }
    

    接下来,就可以注册进进Engine里面了

    var Engine = gin.New()
    Engine.GET("/hi",handler(do))
    
    

    相关文章

      网友评论

        本文标题:gin定制自己的context

        本文链接:https://www.haomeiwen.com/subject/eoamfqtx.html