Need help with graphql?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

graphql-go
7.0K Stars 608 Forks MIT License 937 Commits 160 Opened issues

Description

An implementation of GraphQL for Go / Golang

Services available

!
?

Need anything else?

Contributors list

graphql CircleCI GoDoc Coverage Status Join the chat at https://gitter.im/graphql-go/graphql

An implementation of GraphQL in Go. Follows the official reference implementation

graphql-js
.

Supports: queries, mutations & subscriptions.

Documentation

godoc: https://godoc.org/github.com/graphql-go/graphql

Getting Started

To install the library, run:

bash
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) (interface{}, 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.

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. | | dataloader | Nick Randall | DataLoader implementation in Go. |

Blog Posts

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.