显示 URL 而非 Go 请求 GCP 响应的代码

我很难在 Google Cloud Platform 中显示方向请求的结果。这是我尝试过的:


package main


import (

    "fmt"

    "net/http"

    "context"

    "io/ioutil"

    "google.golang.org/appengine"

    "google.golang.org/appengine/urlfetch"

)


const directionAPIKey = "MyAppKey"

const directionURL = "https://maps.googleapis.com/maps/api/directions/json?origin=%s&destination=%s&mode=%s&key=%s"


func main() {

    http.HandleFunc("/", handler)

}


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

    ctx := appengine.NewContext(r)

    direction, err := fetchDirection(ctx, r.FormValue("origin"), r.FormValue("destination"), r.FormValue("mode"))

    if err != nil {

        http.Error(w, err.Error(), http.StatusInternalServerError)

        return

    }

    w.Header().Add("Content-Type", "application/json; charset=utf-8")

    w.Write(direction)

}


func fetchDirection(ctx context.Context, origin string, destination string, mode string) ([]byte, error) {

    client := urlfetch.Client(ctx)

    resp, err := client.Get(fmt.Sprintf(directionURL, origin, destination, mode, directionAPIKey))

    if err != nil {

        return nil, err

    }

    defer resp.Body.Close()

    return ioutil.ReadAll(resp.Body)

}

我成功部署了我的应用程序,但是,上面代码的结果是:


Get https://maps.googleapis.com/maps/api/directions/json?origin=&destination=&mode=&key=APIKey not an App Engine context

而不是请求的结果。这是来自浏览器的图像。我怎样才能得到想要的结果,而不仅仅是那个 URL?提前致谢。


慕神8447489
浏览 88回答 1
1回答

四季花海

我发现当您的 AppEngine 应用程序将运行时设置为 go111 并且应用程序导入任何“google.golang.org/appengine”包但应用程序不调用“ appengine.Main”method func main() {    http.HandleFunc("/", handler)    appengine.Main()}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go