Chi
Mount grx on Chi routers with explicit prefix stripping alongside REST routes.
Chi keeps routing orthogonal to middleware - handy when REST and GraphQL share auth, traces, quotas, etc. r.Mount("/api", http.StripPrefix("/api", gql)) trims the public prefix before grx.Server evaluates WithPlaygroundPath("/playground") and WithGraphQLPath("/query"), identical to ServeMux but with Chi ergonomics.
Build graph from Minimal schema once.
Dependencies
go get github.com/go-chi/chi/v5main.go
package main
import (
"log"
"net/http"
"example.com/hello-grx/graph"
"github.com/go-chi/chi/v5"
"github.com/grx-gql/grx"
)
func main() {
gql, err := grx.NewServer(
grx.WithSchema(graph.Schema()),
grx.WithPlaygroundPath("/playground"),
grx.WithGraphQLPath("/query"),
)
if err != nil {
log.Fatal(err)
}
r := chi.NewRouter()
r.Get("/health", func(w http.ResponseWriter, _ *http.Request) {
w.Write([]byte("ok"))
})
r.Mount("/api", http.StripPrefix("/api", gql))
log.Println("GraphiQL: http://localhost:8080/api/playground")
log.Println("GraphQL POST: http://localhost:8080/api/query")
log.Fatal(http.ListenAndServe(":8080", r))
}Add r.Use(...) middleware before Mount to share behaviour across subtrees.
Related
- Get started · Gin · Echo
Edit this page on GitHub
Last updated on