|
|
6 years ago | |
|---|---|---|
| .. | ||
| errors | 6 years ago | |
| internal | 6 years ago | |
| introspection | 6 years ago | |
| log | 6 years ago | |
| relay | 6 years ago | |
| trace | 6 years ago | |
| Gopkg.lock | 6 years ago | |
| Gopkg.toml | 6 years ago | |
| LICENSE | 6 years ago | |
| README.md | 6 years ago | |
| graphql.go | 6 years ago | |
| id.go | 6 years ago | |
| introspection.go | 6 years ago | |
| time.go | 6 years ago | |
The goal of this project is to provide full support of the GraphQL draft specification with a set of idiomatic, easy to use Go packages.
While still under heavy development (internal APIs are almost certainly subject to change), this library is
safe for production use.
context.ContextOpenTracing standardWe're trying out the GitHub Project feature to manage graphql-go's development roadmap.
Feedback is welcome and appreciated.
package main
import (
"log"
"net/http"
graphql "github.com/graph-gophers/graphql-go"
"github.com/graph-gophers/graphql-go/relay"
)
type query struct{}
func (_ *query) Hello() string { return "Hello, world!" }
func main() {
s := `
schema {
query: Query
}
type Query {
hello: String!
}
`
schema := graphql.MustParseSchema(s, &query{})
http.Handle("/query", &relay.Handler{Schema: schema})
log.Fatal(http.ListenAndServe(":8080", nil))
}
To test:
$ curl -XPOST -d '{"query": "{ hello }"}' localhost:8080/query
A resolver must have one method for each field of the GraphQL type it resolves. The method name has to be exported and match the field's name in a non-case-sensitive way.
The method has up to two arguments:
context.Context argument.*struct { ... } argument if the corresponding GraphQL field has arguments. The names of the struct fields have to be exported and have to match the names of the GraphQL arguments in a non-case-sensitive way.The method has up to two results:
error result.Example for a simple resolver method:
func (r *helloWorldResolver) Hello() string {
return "Hello world!"
}
The following signature is also allowed:
func (r *helloWorldResolver) Hello(ctx context.Context) (string, error) {
return "Hello world!", nil
}
tonyghita/graphql-go-example - A more "productionized" version of the Star Wars API example given in this repository.
deltaskelta/graphql-go-pets-example - graphql-go resolving against a sqlite database
OscarYuen/go-graphql-starter - a starter application integrated with dataloader, psql and basic authentication