https://github.com/davewhit3/gqlgen-batching
GraphQL batch support for gqlgen
https://github.com/davewhit3/gqlgen-batching
api apollo batch batching golang gql gqlgen graphql schema
Last synced: 10 months ago
JSON representation
GraphQL batch support for gqlgen
- Host: GitHub
- URL: https://github.com/davewhit3/gqlgen-batching
- Owner: davewhit3
- License: gpl-3.0
- Created: 2023-11-16T11:00:42.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-17T19:34:02.000Z (almost 2 years ago)
- Last Synced: 2025-05-19T07:08:08.551Z (11 months ago)
- Topics: api, apollo, batch, batching, golang, gql, gqlgen, graphql, schema
- Language: Go
- Homepage:
- Size: 53.7 KB
- Stars: 7
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gqlgen-batching
GraphQL batch support for gqlgen
## What is gqlgen-batching?
**gqlgen-batching** is an extension of [gqlgen](https://github.com/99designs/gqlgen) to support [GraphQL Batching](https://github.com/graphql/graphql-over-http/blob/main/rfcs/Batching.md).
## Quick start
1. Add package import
```go
import "github.com/davewhit3/gqlgen-batching"
```
2. Add batching transport
```go
srv.AddTransport(batching.POST{})
```
3. Prepare your server
```go
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))
```
## How to use?
Add header to request `X-Batch: true`
```bash
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:
```json
[
{
"data": {
"hero": {
"name": "R2-D2"
}
}
},
{
"data": {
"hero": {
"name": "Luke Skywalker"
}
}
}
]
```