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が表示される

hoge