Cloud FunctionsでGraphQLを動かす
gqlgenでイニシャライズする
go get github.com/99designs/gqlgen
go run github.com/99designs/gqlgen init
直接ServeHttpを叩いて動かすようにしてみる
var srv *handler.Server
var play http.HandlerFunc
func init() {
srv = handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{Resolvers: &graph.Resolver{}}))
// /GraphQLHandlerを含めないとplaygroundのアクセス先がおかしくなる
play = playground.Handler("GraphQL playground", "/GraphQLHandler/query")
}
func GraphQLHandler(w http.ResponseWriter, r *http.Request) {
switch r.RequestURI {
case "/query":
srv.ServeHTTP(w, r)
case "/":
play.ServeHTTP(w, r)
}
}
Cloud BuildのAPIを有効化して、cloud functions APIを許可する
gcloud functions deploy graphql --runtime go116 --trigger-http
Deploy後のURLにアクセスしたらちゃんとPlayGroundが表示される