Skip to content

sprucehealth/graphql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3bd7766 · Jan 28, 2025
Aug 14, 2024
Aug 14, 2024
Nov 13, 2024
Aug 14, 2024
Aug 14, 2024
Aug 14, 2024
Jul 11, 2015
Aug 15, 2015
Aug 14, 2024
Aug 14, 2024
Aug 14, 2024
May 8, 2020
Mar 28, 2017
Aug 14, 2024
Aug 14, 2024
Jan 13, 2025
Aug 14, 2024
Aug 14, 2024
Aug 14, 2024
Aug 14, 2024
Jan 27, 2025
Jan 13, 2025
Jan 13, 2025
Jan 27, 2025
Aug 14, 2024
Aug 14, 2024
Mar 25, 2017
Aug 14, 2024
Aug 14, 2024
Aug 14, 2024
Aug 14, 2024
Mar 27, 2017
Aug 14, 2024
Mar 25, 2017
Mar 25, 2017
Mar 27, 2017
Mar 27, 2017
Mar 27, 2017
Mar 28, 2017
Mar 25, 2017
Mar 27, 2017
Mar 25, 2017
Mar 27, 2017
Mar 27, 2017
Feb 9, 2016
Mar 27, 2017
Sep 8, 2020
Feb 9, 2016
Feb 9, 2016
Feb 9, 2016
Mar 27, 2017
Feb 9, 2016
Mar 25, 2017
Mar 25, 2017
Mar 25, 2017
Feb 9, 2016
Mar 27, 2017
Aug 14, 2024
Aug 14, 2024
Mar 28, 2017
May 8, 2020
Mar 27, 2017
Jan 28, 2025
Mar 27, 2017
Mar 27, 2017
Aug 14, 2024
Aug 14, 2024
Aug 14, 2024
Aug 14, 2024
May 8, 2020
Aug 14, 2024
Aug 14, 2024

Repository files navigation

graphql Build Status GoDoc Coverage Status Join the chat at https://gitter.im/chris-ramon/graphql

A work-in-progress implementation of GraphQL for Go.

Getting Started

To install the library, run:

go get github.com/graphql-go/graphql

The following is a simple example which defines a schema with a single hello string-type field and a Resolve method which returns the string world. A GraphQL query is performed against this schema with the resulting output printed in JSON format.

package main

import (
	"encoding/json"
	"fmt"
	"log"

	"github.com/graphql-go/graphql"
)

func main() {
	// Schema
	fields := graphql.Fields{
		"hello": &graphql.Field{
			Type: graphql.String,
			Resolve: func(p graphql.ResolveParams) (any, error) {
				return "world", nil
			},
		},
	}
	rootQuery := graphql.ObjectConfig{Name: "RootQuery", Fields: fields}
	schemaConfig := graphql.SchemaConfig{Query: graphql.NewObject(rootQuery)}
	schema, err := graphql.NewSchema(schemaConfig)
	if err != nil {
		log.Fatalf("failed to create new schema, error: %v", err)
	}

	// Query
	query := `
		{
			hello
		}
	`
	params := graphql.Params{Schema: schema, RequestString: query}
	r := graphql.Do(params)
	if len(r.Errors) > 0 {
		log.Fatalf("failed to execute graphql operation, errors: %+v", r.Errors)
	}
	rJSON, _ := json.Marshal(r)
	fmt.Printf("%s \n", rJSON) // {“data”:{“hello”:”world”}}
}

For more complex examples, refer to the examples/ directory and graphql_test.go.

Origin and Current Direction

This project was originally a port of v0.4.3 of graphql-js (excluding the Validator), which was based on the July 2015 GraphQL specification. graphql is currently several versions behind graphql-js, however future efforts will be guided directly by the latest formal GraphQL specification (currently: October 2015).

Third Party Libraries

Name Author Description
graphql-go-handler Hafiz Ismail Middleware to handle GraphQL queries through HTTP requests.
graphql-relay-go Hafiz Ismail Lib to construct a graphql-go server supporting react-relay.
golang-relay-starter-kit Hafiz Ismail Barebones starting point for a Relay application with Golang GraphQL server.

Blog Posts

Roadmap

  • Lexer
  • Parser
  • Schema Parser
  • Printer
  • Schema Printer
  • Visitor
  • Executor
  • Validator
  • Examples
    • Basic Usage (see: PR-#21)
    • React/Relay
  • Alpha Release (v0.1)