猿问

Google App Engine context.Context

在 GAE Go 中,为了记录,我们需要创建一个新的上下文,使用appengine.NewContext(r)which returns context.Context。


如何使用此上下文在请求范围内设置/获取变量?在 Gorilla 中,Context在上下文中有一个干净的 Set/Get 函数,这是我想在我的代码中使用的。但是我不想导入 2 个不同的上下文包。


GAE 日志记录强制您使用context.Context.


//handlerFunc


func MyFunc(w http.ResponseWriter, r *http.Request) {

    ctx := appengine.NewContext(r)

    // I want to set request scoped variables in context and pass it to doSomething.

    doSomething(ctx,w,r);

}


func doSomething(ctx context.Context, w http.ResponseWriter, r *http.Request) {

    log.Debugf(ctx, "Beginning doSomething"); //requires context parameter

    // get the request scoped variables from context. How? Use Gorilla Context?

}


LEATH
浏览 144回答 1
1回答

缥缈止盈

import (    "golang.org/x/net/context"    gorillacontext "github.com/gorilla/context"    )我知道这是不是你想要的答案,但有没有办法解决它,因为“背景下的围棋标准库(由App Engine的使用)”包不提供你想要比大猩猩“的功能范围内”包. 如果要使用定义自己的“上下文”包的其他框架,则需要使用多个导入。在小组讨论中对这两个上下文提出了一个很好的观点,因为可能 Gorilla 的上下文被错误命名,因为它们都用于不同的目的——“App Engine 一个存储凭据以发出 RPC 请求;Gorilla 一个只是请求的容器全球性。”
随时随地看视频慕课网APP

相关分类

Go
我要回答