404 页面在尝试将 Gqlgen 与朱利安施密特/http 路由器一起使用时未找到

以下是我运行的代码,问题是我得到404页面没有找到而不是graphql游乐场页面是否可以使用gqlgen的httprouter,或者我需要回到chi或mux我也无法使用中间件,因为r没有使用方法


package main


import (

    "gographql-server/graph"

    "gographql-server/graph/generated"

    "log"

    "net/http"

    "os"


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

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

    "github.com/julienschmidt/httprouter"

)


const defaultPort = "8080"


func PlaygroundHandler() httprouter.Handle {

    h := playground.Handler("GraphQL", "/query")


    return func(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {

        h.ServeHTTP(w, req)

    }

}


func GraphqlHandler() httprouter.Handle {

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


    return func(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {

        h.ServeHTTP(w, req)

    }

}


func main() {

    port := os.Getenv("PORT")

    if port == "" {

        port = defaultPort

    }

    r := httprouter.New()

    r.POST("/query", GraphqlHandler())

    r.GET("/", PlaygroundHandler())

    // r.Use(middleware.RequestID)

    // r.Use(middleware.Logger)

    // r.Use(middleware.Recoverer)

    // r.Use(middlewares.AuthMiddleware())

    log.Printf("connect to http://localhost:%s/ for GraphQL playground", port)

    log.Fatal(http.ListenAndServe(":"+port, nil))

}


阿波罗的战车
浏览 72回答 1
1回答

HUWWW

如果你传递到网址。听并服务()在这条行中:nillog.Fatal(http.ListenAndServe(":"+port, nil))这意味着使用包的默认服务器。但是您不会在默认的多路复用器中注册任何处理程序,而是使用 httprouter 创建自己的路由器。New(),并在其中注册处理程序。net/http因此,您必须将此路由器传递给:ListenAndServe()log.Fatal(http.ListenAndServe(":"+port, r))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go