10

GAE内でゴリラマルチプレクサを使用するのにいくつか問題があります。

試してみると、「404ページが見つかりません」と表示されます。rootHandler関数は呼び出されません(トレースは生成されません)

以下は私のコードの一部です、何かアイデアはありますか?

事前にt​​hk

...
    func init() {
     r := mux.NewRouter()
     r.HandleFunc("/",rootHandler)
    }
    func rootHandler(w http.ResponseWriter, r *http.Request) {
     var functionName = "rootHandler"
     c := appengine.NewContext(r)
     c.Infof(functionName+"-start")
     defer c.Infof(functionName+"-end")
...
4

2 に答える 2

31

要求をマルチプレクサルーターにルーティングする必要があります。httpパッケージにはDefaultServeMuxAppEngineで使用されるものがありますが、使用されていmuxません。(そしてそれはそれ自体でそのルートを登録していませんnet/http

つまり、あなたがしなければならないのは、あなたのmuxルーターをnet/http:に登録することだけです。

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/", HomeHandler)
    r.HandleFunc("/products", ProductsHandler)
    r.HandleFunc("/articles", ArticlesHandler)
    http.Handle("/", r)
}

(ドキュメントから直接)

ここで重要な部分はですhttp.Handle("/", r)

于 2012-12-29T15:03:44.250 に答える
1

ListenAndServeルーターはインターフェースを実装しているため、2番目の引数としてルーターを渡すこともできhttp.Handlerます。

router := mux.NewRouter()
router.HandleFunc("/", HomeHandler)
http.ListenAndServe(":8080", router) // pass the router here
于 2021-12-13T15:33:25.460 に答える