gin独自のcontextをカスタマイズ
845 ワード
ginを使用する場合、ユーザーのidなどの変数をcontextに保存するには、contextのKeys変数に置くのが一般的です.そうすると、取るたびにタイプ変換を行わなければなりません.私が慣れている方法は、自分のcontextを定義し、contextで保存したい変数を定義することです.次のようにします.
次にhandlerを定義します
それから、どのようにそれをEngineの中に登録して、ここはまた1つの関数が処理する必要があります
次は、Engineに登録できます
type context struct {
*gin.Context
userId int64 // id
}
次にhandlerを定義します
func do(c *context) {
fmt.Println(c.userId)
}
それから、どのようにそれをEngineの中に登録して、ここはまた1つの関数が処理する必要があります
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))