使用gqlgen为GraphQL添加具有go-chi路由器的身份验证中间件

问题描述

package main

import (
    "github.com/go-chi/chi"
    "go-graphql-demo/graph"
    "go-graphql-demo/graph/generated"
    "log"
    "net/http"
    "os"

    "github.com/99designs/gqlgen/graphql/handler"
    "github.com/99designs/gqlgen/graphql/playground"
)



func main() {

    router := chi.NewRouter()

    srv := handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{Resolvers: &graph.Resolver{}}))

    router.Handle("/",playground.Handler("GraphQL playground","/query"))
    router.Handle("/query",srv)

    log.Printf("connect to http://localhost:%s/ for GraphQL playground",port)
    log.Fatal(http.ListenAndServe(":8080",nil))
}

按照此使用handler.NewDefaultServer(...) Cannot connect to graphql playground when using go-chi router

参考 https://gqlgen.com/recipes/authentication/

解决方法

log.Fatal(http.ListenAndServe(":8080",nil)) 应该 log.Fatal(http.ListenAndServe(":8080",router))

看上去也没有设置port var。