Documentation
¶
Overview ¶
Package graphql provides a low level GraphQL client.
// create a client (safe to share across requests)
client := graphql.NewClient("https://machinebox.io/graphql")
// make a request
req := graphql.NewRequest(`
query ($key: String!) {
items (id:$key) {
field1
field2
field3
}
}
`)
// set any variables
req.Var("key", "value")
// run it and capture the response
var respData ResponseStruct
if err := client.Run(ctx, req, &respData); err != nil {
log.Fatal(err)
}
Specify client ¶
To specify your own http.Client, use the WithHTTPClient option:
httpclient := &http.Client{}
client := graphql.NewClient("https://machinebox.io/graphql", graphql.WithHTTPClient(httpclient))
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BuildHeaderFunc ¶ added in v0.1.3
type Client ¶
type Client struct {
// Log is called with various debug information.
// To log to standard out, use:
// client.Log = func(s string) { log.Println(s) }
Log func(s string)
// contains filtered or unexported fields
}
Client is a client for interacting with a GraphQL API.
func NewClient ¶
func NewClient(endpoint string, opts ...ClientOption) *Client
NewClient makes a new Client capable of making GraphQL requests.
func (*Client) Run ¶
Run executes the query and unmarshals the response from the data field into the response object. Pass in a nil response object to skip response parsing. If the request fails or the server returns an error, the first error will be returned.
func (*Client) SubscriptionClient ¶
type ClientOption ¶
type ClientOption func(*Client)
ClientOption are functions that are passed into NewClient to modify the behaviour of the Client.
func ImmediatelyCloseReqBody ¶
func ImmediatelyCloseReqBody() ClientOption
ImmediatelyCloseReqBody will close the req body immediately after each request body is ready
func UseMultipartForm ¶
func UseMultipartForm() ClientOption
UseMultipartForm uses multipart/form-data and activates support for files.
func WithBuildHeaderFunc ¶ added in v0.1.3
func WithBuildHeaderFunc(f BuildHeaderFunc) ClientOption
func WithHTTPClient ¶
func WithHTTPClient(httpclient *http.Client) ClientOption
WithHTTPClient specifies the underlying http.Client to use when making requests.
NewClient(endpoint, WithHTTPClient(specificHTTPClient))
type GraphQLErr ¶ added in v0.1.5
type GraphQLErr struct {
Message string `json:"message"`
Path []interface{} `json:"path,omitempty"`
Extensions map[string]interface{} `json:"extensions,omitempty"`
}
func (GraphQLErr) Error ¶ added in v0.1.5
func (e GraphQLErr) Error() string
type Request ¶
type Request struct {
// Header represent any request headers that will be set
// when the request is made.
Header http.Header
// contains filtered or unexported fields
}
Request is a GraphQL request.
func NewRequest ¶
NewRequest makes a new Request with the specified string.
func (*Request) File ¶
File sets a file to upload. Files are only supported with a Client that was created with the UseMultipartForm option.
type RequestBody ¶ added in v0.1.6
type Subscription ¶
type Subscription chan SubscriptionPayload
type SubscriptionClient ¶
type SubscriptionClient struct {
// contains filtered or unexported fields
}
func (*SubscriptionClient) Close ¶
func (c *SubscriptionClient) Close() error
func (*SubscriptionClient) Subscribe ¶
func (c *SubscriptionClient) Subscribe(req *Request) (Subscription, error)
func (*SubscriptionClient) Unsubscribe ¶
func (c *SubscriptionClient) Unsubscribe(sub Subscription)
type SubscriptionPayload ¶
type SubscriptionPayload struct {
Data *json.RawMessage
Error *json.RawMessage
}
