Redisインスタンス引数を持つ関数をHTTPハンドラーに変換する関数を記述します:
func redisHandler(c *RedisInstance,
f func(c *RedisInstance, w http.ResponseWriter, r *http.Request)) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { f(c, w, r) })
}
次のようにAPIハンドラーを記述します:
func AddTodoHandler(c *RedisInstance, w http.ResponseWriter, r *http.Request) {
...
}
次のようにマルチプレクサに追加します:
r.Handler("/todo", redisHandler(client, api.AddTodoHandler)).Methods("POST")
ここで、client
はRedisインスタンスです。