Tre*_*ama 7 google-app-engine go
假设我有以下init函数路由请求.
func init() {
http.HandleFunc("/user", handler1)
http.HandleFunc("/user/profile", handler2)
http.HandleFunc("/user/post", handler3)
....
....
}
Run Code Online (Sandbox Code Playgroud)
所有这些都要求我拥有用户的个人资料.
我知道我可以
func handler1(w http.ResponseWriter, r *http.Request) {
getUserdata()
//Actual handler code
...
...
}
Run Code Online (Sandbox Code Playgroud)
但是,有没有一种方法可以在不将函数调用放入每个处理程序的情况下获取数据?这首先是Go会要求你做的事情吗?
Jer*_*all 10
你有两个选择.
http.Handler界面http.HandlerFunc用包装HandleFunc 包装所有你.因为看起来你想要一些简单的东西我会说明WRapper
func Prehook(f http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
getUserData()
f(w, r)
}
}
func init() {
// use getUserData() call before your handler
http.HandleFunc("/user", Prehook(handler1))
// Don't use getUserData call before your handler
http.HandleFunc("/user/profile", handler2)
}
Run Code Online (Sandbox Code Playgroud)