gpt4 book ai didi

firebase - 如何传递应用程序功能?

转载 作者:数据小太阳 更新时间:2023-10-29 03:03:40 26 4
gpt4 key购买 nike

main 中,应用程序是这样启动的:

// ...

func main () {
initializeAppDefault()
go lib.GetData()
http.HandleFunc("/_ah/somepoint", lib.SomeHandler)
// ..

func initializeAppDefault() *firebase.App {
// [START initialize_app_default]
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// [END initialize_app_default]
return app
}

SomeHandler 中,我需要 initializeAppDefault 返回的应用程序来验证 JSON Web Token (JWT)。

func SomeHandler(w http.ResponseWriter, r *http.Request) {
// Set content type:
w.Header().Set("Content-Type", "application/json")

if r.Header != nil {
ReqToken := r.Header.Get("Authorization")
splitToken := strings.Split(ReqToken, "Bearer")
ReqToken = splitToken[1]
fmt.Println(ReqToken)
// Verify JWT
// If it's invalid, return?

verifyIDToken(app, ReqToken)
// How do I pass the app in here?

func verifyIDToken(app *firebase.App, idToken string) *auth.Token {
// ...

我的问题是,当通过调用 initializeAppDefault()main.go 文件中初始化应用程序时,我如何将它传递给 SomeHandler/_ah/somepoint 处处理请求?

最佳答案

将任意依赖项传递给 HTTP 处理函数的方法是返回一个闭包:

func myHandler(a *Something, b *SomethingElse) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// The body of the handler here, using a and b
}
}

然后你将把它用作:

http.Handle("/some/path", myHandler(a, b))

关于firebase - 如何传递应用程序功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48164890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com