GraphQL batch support for gqlgen
gqlgen-batching is an extension of gqlgen to support GraphQL Batching.
- Add package import
import "github.com/davewhit3/gqlgen-batching"
- Add batching transport
srv.AddTransport(batching.POST{})
- Prepare your server
schema := generated.NewExecutableSchema(graph.NewResolver()) srv := handler.New(schema) srv.AddTransport(transport.Websocket{ KeepAlivePingInterval: 10 * time.Second, }) srv.AddTransport(transport.Options{}) srv.AddTransport(transport.GET{}) srv.AddTransport(batching.POST{}) srv.AddTransport(transport.MultipartForm{}) srv.SetQueryCache(lru.New(1000)) srv.Use(extension.Introspection{}) srv.Use(extension.AutomaticPersistedQuery{ Cache: lru.New(100), }) http.Handle("/", playground.Handler("Starwars", "/query")) http.Handle("/query", srv) log.Fatal(http.ListenAndServe(":8080", nil))
Add header to request X-Batch: true
curl -X POST http://localhost:8080/query \
-H "X-Batch: true" -H "Content-Type: application/json" \
-d '[{"query":"{hero(episode: JEDI) { name }}"},{"query":"{hero(episode: EMPIRE) { name }}"}]'
Result:
[
{
"data": {
"hero": {
"name": "R2-D2"
}
}
},
{
"data": {
"hero": {
"name": "Luke Skywalker"
}
}
}
]