_examples/starwars/server/server.go (28 lines of code) (raw):
package main
import (
"context"
"fmt"
"log"
"net/http"
"github.com/99designs/gqlgen/_examples/starwars"
"github.com/99designs/gqlgen/_examples/starwars/generated"
"github.com/99designs/gqlgen/graphql"
"github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/handler/transport"
"github.com/99designs/gqlgen/graphql/playground"
)
func main() {
srv := handler.New(generated.NewExecutableSchema(starwars.NewResolver()))
srv.AddTransport(transport.GET{})
srv.AddTransport(transport.POST{})
srv.AroundFields(func(ctx context.Context, next graphql.Resolver) (res any, err error) {
rc := graphql.GetFieldContext(ctx)
fmt.Println("Entered", rc.Object, rc.Field.Name)
res, err = next(ctx)
fmt.Println("Left", rc.Object, rc.Field.Name, "=>", res, err)
return res, err
})
http.Handle("/", playground.Handler("Starwars", "/query"))
http.Handle("/query", srv)
log.Fatal(http.ListenAndServe(":8080", nil))
}