Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/graphql-go/handler
Golang HTTP.Handler for graphl-go
https://github.com/graphql-go/handler
Last synced: 6 days ago
JSON representation
Golang HTTP.Handler for graphl-go
- Host: GitHub
- URL: https://github.com/graphql-go/handler
- Owner: graphql-go
- License: mit
- Created: 2015-10-03T11:57:19.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-17T18:00:08.000Z (9 months ago)
- Last Synced: 2025-02-09T01:08:17.497Z (13 days ago)
- Language: Go
- Size: 60.5 KB
- Stars: 449
- Watchers: 10
- Forks: 136
- Open Issues: 34
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-list - handler - go | graphql-go | 383 | (Go)
README
# graphql-go-handler [](https://circleci.com/gh/graphql-go/handler) [](https://godoc.org/github.com/graphql-go/handler) [](https://coveralls.io/github/graphql-go/handler?branch=master) [](https://gitter.im/graphql-go/graphql?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
Golang HTTP.Handler for [graphl-go](https://github.com/graphql-go/graphql)
### Usage
```go
package mainimport (
"net/http"
"github.com/graphql-go/handler"
)func main() {
schema, _ := graphql.NewSchema(...)h := handler.New(&handler.Config{
Schema: &schema,
Pretty: true,
GraphiQL: true,
})http.Handle("/graphql", h)
http.ListenAndServe(":8080", nil)
}
```### Using Playground
```go
h := handler.New(&handler.Config{
Schema: &schema,
Pretty: true,
GraphiQL: false,
Playground: true,
})
```### Details
The handler will accept requests with
the parameters:* **`query`**: A string GraphQL document to be executed.
* **`variables`**: The runtime values to use for any GraphQL query variables
as a JSON object.* **`operationName`**: If the provided `query` contains multiple named
operations, this specifies which operation should be executed. If not
provided, an 400 error will be returned if the `query` contains multiple
named operations.GraphQL will first look for each parameter in the URL's query-string:
```
/graphql?query=query+getUser($id:ID){user(id:$id){name}}&variables={"id":"4"}
```If not found in the query-string, it will look in the POST request body.
The `handler` will interpret it
depending on the provided `Content-Type` header.* **`application/json`**: the POST body will be parsed as a JSON
object of parameters.* **`application/x-www-form-urlencoded`**: this POST body will be
parsed as a url-encoded string of key-value pairs.* **`application/graphql`**: The POST body will be parsed as GraphQL
query string, which provides the `query` parameter.### Examples
- [golang-graphql-playground](https://github.com/graphql-go/playground)
- [golang-relay-starter-kit](https://github.com/sogko/golang-relay-starter-kit)
- [todomvc-relay-go](https://github.com/sogko/todomvc-relay-go)### Test
```bash
$ go get github.com/graphql-go/handler
$ go build && go test ./...