Go
GAE

GAE/Go1.8のcontext問題

問題

GAEのcontextを取得する際、公式のサンプルでは以下のように取得しています。

import "google.golang.org/appengine"

func handler(w http.ResponseWriter, r *http.Request) {
    ctx := appengine.NewContext(r)
}

しかしapiバージョンがgo1.8の場合は以下のようなエラーが出ると思います。

appengine: NewContext passed an unknown http.Request

これは、Go1.7で標準パッケージにcontextパッケージが追加されたことによる問題です。

解決策

以下のようにContextメソッドを使用することで、リクエストにスコープされたコンテキストを取得することが出来ます。

func handler(w http.ResponseWriter, r *http.Request) {
    ctx := r.Context()
}