Skip to content
/ graphql Public
forked from Laisky/graphql

Package graphql provides a GraphQL client implementation.

License

Notifications You must be signed in to change notification settings

fi0/graphql

 
 

Repository files navigation

Golang GraphQL Client

GitHub release License: MIT Commitizen friendly Go Report Card GoDoc Build Status codecov

Fully compatible with https://github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f

You can simply replace github.com/shurcooL/graphql --> github.com/Laisky/graphql to access new features.

New Features

Cache friendly

use HTTP GET when request graphql query, use HTTP POST when request graphql mutation.

Set Headers & Cookies

cli := NewClient(
    "url",
    httpClient,
    graphql.WithCookie("cookieName", "cookieVal"),
    graphql.WithHeader("headerName", "headerVal"),
)

Usage

package test

import (
	"context"
	"net/http"
	"testing"

	"github.com/Laisky/graphql"
)

type gcpLockQuery struct {
	Lock struct {
		Name      graphql.String `graphql:"name"`
		ExpiresAt graphql.String `graphql:"expires_at"`
	} `graphql:"Lock(name: $name)"`
}

func TestQueryWithHTTPGet(t *testing.T) {
	ctx := context.Background()
	httpClient := http.DefaultClient
	query := new(gcpLockQuery)
	vars := map[string]interface{}{
		"name": graphql.String("laisky.123"),
	}
	gracli := graphql.NewClient(
		"https://blog.laisky.com/graphql/query/",
		httpClient,
	)
	if err := gracli.Query(ctx, query, vars); err != nil {
		t.Fatalf("%+v", err)
	}

}

About

Package graphql provides a GraphQL client implementation.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%