部署go api不发送任何响应

时间:2018-09-21 17:19:31

标签: google-app-engine go

我已经创建了Go API并进行了部署,但是当我看到日志时,没有Println并且没有响应发送给客户端

main

func main() {
    http.HandleFunc("/v1/", handler)
    appengine.Main()
}

func handler(w http.ResponseWriter, r *http.Request) {
    if r.Method != "GET" {
        http.Error(w, "not allowed", http.StatusMethodNotAllowed)
        return
    }
    ...
}

yaml文件:

runtime: go
api_version: go1.8
handlers:
- url: /.*
  script: _go_app

我正在访问的网址: myapp.appspot.com/v1/param

(这是_go_app是什么?)

问题在于,如果我传递“ POST”请求,该错误就可以正常工作,但是如果我发出有效请求,则响应将永远存在。

完整代码:https://goplay.space/#yiIp42FKzzj

1 个答案:

答案 0 :(得分:0)

在AppEngine中,您必须使用AppEngine logger,并从请求中传入上下文。

godoc中的示例:

c := appengine.NewContext(r)
query := &log.Query{
    AppLogs:  true,
    Versions: []string{"1"},
}

for results := query.Run(c); ; {
    record, err := results.Next()
    if err == log.Done {
        log.Infof(c, "Done processing results")
        break
    }
    if err != nil {
        log.Errorf(c, "Failed to retrieve next log: %v", err)
        break
    }
    log.Infof(c, "Saw record %v", record)
}