Skip to content

Latest commit

 

History

History
71 lines (55 loc) · 2 KB

README.md

File metadata and controls

71 lines (55 loc) · 2 KB

Golang GraphQL Client

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

Fully compatible with https://github.com/shurcooL/graphql

You can simply replace github.com/shurcooL/graphql --> github.com/sostronk/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/sostronk/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)
	}

}