An utility wrote on Go for using GraphiQL without need to use NPM.
To install the library, run
go get -u github.com/friendsofgo/graphiql
To build graphi's CLI you must run
make build-cli
This will generate a binary in the project's bin directory called graphiql. You can then move this binary to anywhere in your PATH
.
If you've a GraphQL server on GO and you want to include the GraphiQL on it, it's as simple as this:
package main
import(
"net/http"
"github.com/friendsofgo/graphiql"
)
func main() {
graphiqlHandler, err := graphiql.NewGraphiqlHandler("/graphql")
if err != nil {
panic(err)
}
http.HandleFunc("/graphql", myGraphQLHandler)
http.Handle("/graphiql", graphiqlHandler)
http.ListenAndServe(":8080", nil)
}
If you want launch GraphiQL for use on your GraphQL API but you don't want include it in your own project you can launch your own GraphiQL Server:
package main
import(
"net/http"
"github.com/friendsofgo/graphiql"
)
func main() {
graphiqlHandler, err := graphiql.NewGraphiqlHandler("http://localhost:8080/graphql")
if err != nil {
panic(err)
}
http.Handle("/graphiql", graphiqlHandler)
http.ListenAndServe(":4040", nil)
}
Yo can use graphiql
as command
$ graphiql --help
usage: graphiql [-version] [OPTIONS]
graphiql is an standalone server to use Graphiql, based on https://github.com/graphql/graphiql
-endpoint string
Endpoint where are hosted your API, eg: http://localhost:8080/graphql (default "http://localhost:8080/graphql")
-graphiql
Show the js client of GraphiQL version
-port string
Port where will be launched the GraphiQL client (default "4040")
-version
Show the graphiql version information
And it'll launch a GraphiQL
server
$ graphiql
2018/11/24 17:10:36 GraphiQL run on http://localhost:4040/graphiql...
2018/11/24 17:10:36 GraphQL endpoint http://localhost:8080/graphql
2018/11/24 17:10:36 Use (ctrl+c) to terminate the execution
The application is also available through Docker, just run:
docker run -it --rm -p 4040:4040 friendsofgo/graphiql
Remember to use the -p flag to expose the container port where the application is listening (4040 by default).
Contributions are more than welcome, if you are interested please fork this repo and send your Pull Request.
MIT License, see LICENSE