Код, отображающий URL, а не ответ на запрос GCP с Go
Мне сложно отобразить результат запроса направления в 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? Заранее спасибо.
1 ответ
Решение
Я обнаружил, что проблема "не контекст App Engine" возвращается, когда для вашего приложения AppEngine установлено время выполнения go111, и приложение импортирует любой из пакетов "google.golang.org/appengine", но приложение не вызывает " appengine.Main "
method func main() {
http.HandleFunc("/", handler)
appengine.Main()
}