handler

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2023 License: MIT Imports: 11 Imported by: 1

README

graphql-go-tools-handler

Fork of https://github.com/graphql-go/handler with some changes

Usage
func main() {
	schema, _ := graphql.NewSchema(...)

	h := handler.New(&handler.Config{
		Schema: &schema,
		Pretty: true,
		GraphiQL: handler.NewDefaultGraphiQLConfig(),
	})

	http.Handle("/graphql", h)
	http.ListenAndServe(":8080", nil)
}
Using Playground
h := handler.New(&handler.Config{
	Schema: &schema,
	Pretty: true,
	Playground: handler.NewDefaultPlaygroundConfig(),,
})
Details

The handler will accept requests with the parameters:

  • query: A string GraphQL document to be executed.

  • variables: The runtime values to use for any GraphQL query variables as a JSON object.

  • operationName: If the provided query contains multiple named operations, this specifies which operation should be executed. If not provided, an 400 error will be returned if the query contains multiple named operations.

GraphQL will first look for each parameter in the URL's query-string:

/graphql?query=query+getUser($id:ID){user(id:$id){name}}&variables={"id":"4"}

If not found in the query-string, it will look in the POST request body. The handler will interpret it depending on the provided Content-Type header.

  • application/json: the POST body will be parsed as a JSON object of parameters.

  • application/x-www-form-urlencoded: this POST body will be parsed as a url-encoded string of key-value pairs.

  • application/graphql: The POST body will be parsed as GraphQL query string, which provides the query parameter.

Documentation

Index

Constants

View Source
const (
	ContentTypeJSON           = "application/json"
	ContentTypeGraphQL        = "application/graphql"
	ContentTypeFormURLEncoded = "application/x-www-form-urlencoded"
)

Constants

Variables

View Source
var GraphiqlVersion = "0.13.2"

GraphiqlVersion is the current version of GraphiQL

View Source
var PlaygroundVersion = "1.7.20"

PlaygroundVersion the default version to use

Functions

This section is empty.

Types

type Config

type Config struct {
	Schema           *graphql.Schema
	Pretty           bool
	GraphiQLConfig   *GraphiQLConfig
	PlaygroundConfig *PlaygroundConfig
	RootObjectFn     RootObjectFn
	ResultCallbackFn ResultCallbackFn
	FormatErrorFn    func(err error) gqlerrors.FormattedError
}

Config configuration

func NewConfig

func NewConfig() *Config

NewConfig returns a new default config

type GraphiQLConfig

type GraphiQLConfig struct {
	Version              string
	Endpoint             string
	SubscriptionEndpoint string
}

GraphiQLConfig a configuration for graphiql

func NewDefaultGraphiQLConfig

func NewDefaultGraphiQLConfig() *GraphiQLConfig

NewDefaultGraphiQLConfig creates a new default config

type Handler

type Handler struct {
	Schema *graphql.Schema
	// contains filtered or unexported fields
}

Handler handler

func New

func New(p *Config) *Handler

New creates a new handler

func (*Handler) ContextHandler

func (h *Handler) ContextHandler(ctx context.Context, w http.ResponseWriter, r *http.Request)

ContextHandler provides an entrypoint into executing graphQL queries with a user-provided context.

func (*Handler) ServeHTTP

func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP provides an entrypoint into executing graphQL queries.

type PlaygroundConfig

type PlaygroundConfig struct {
	Endpoint             string
	SubscriptionEndpoint string
	Version              string
}

PlaygroundConfig playground configuration

func NewDefaultPlaygroundConfig

func NewDefaultPlaygroundConfig() *PlaygroundConfig

NewDefaultPlaygroundConfig creates a new default config

type RequestOptions

type RequestOptions struct {
	Query         string                 `json:"query" url:"query" schema:"query"`
	Variables     map[string]interface{} `json:"variables" url:"variables" schema:"variables"`
	OperationName string                 `json:"operationName" url:"operationName" schema:"operationName"`
}

RequestOptions options

func NewRequestOptions

func NewRequestOptions(r *http.Request) *RequestOptions

NewRequestOptions Parses a http.Request into GraphQL request options struct

type ResultCallbackFn

type ResultCallbackFn func(ctx context.Context, params *graphql.Params, result *graphql.Result, responseBody []byte)

ResultCallbackFn result callback

type RootObjectFn

type RootObjectFn func(ctx context.Context, r *http.Request) map[string]interface{}

RootObjectFn allows a user to generate a RootObject per request

Jump to

Keyboard shortcuts

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