Help us shape the future of Go! Take the 2026 Go Developer Survey

batching

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 17, 2024 License: GPL-3.0 Imports: 14 Imported by: 2

README

gqlgen-batching

GraphQL batch support for gqlgen

What is gqlgen-batching?

gqlgen-batching is an extension of gqlgen to support GraphQL Batching.

Quick start

  1. Add package import
    import "github.com/davewhit3/gqlgen-batching"
    
  2. Add batching transport
    srv.AddTransport(batching.POST{})
    
  3. 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))
    
    

How to use?

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"
         }
      }
   }
]

Documentation

Index

Constants

View Source
const HeaderBatch = "X-Batch"

Variables

This section is empty.

Functions

func IsBatchingRawQuery

func IsBatchingRawQuery(query string) bool

func SplitQuery

func SplitQuery(query string) []*graphql.RawParams

Types

type GraphqlRawParamsCollection

type GraphqlRawParamsCollection []*graphql.RawParams

func (GraphqlRawParamsCollection) Len

func (*GraphqlRawParamsCollection) UnmarshalJSON

func (c *GraphqlRawParamsCollection) UnmarshalJSON(b []byte) error

UnmarshalJSON could unmarshal slice or single query

type POST

type POST struct {
	transport.POST
	// Map of all headers that are added to graphql response. If not
	// set, only one header: Content-Type: application/json will be set.
	ResponseHeaders map[string][]string
}

POST implements the POST side of the default HTTP transport defined in https://github.com/APIs-guru/graphql-over-http#post

func (POST) Do

type Response

type Response interface {
	*graphql.Response | []*graphql.Response
}

Directories

Path Synopsis
example module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL