Question

I've got some problems to use gorilla mux within GAE.

When I try it, I've '404 page not found'. The rootHandler function is not called ( no traces generated)

Below is part of my code, any ideas?

thk in advance

...
    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")
...
Was it helpful?

Solution

You have to route requests to your mux router. http package has DefaultServeMux which is used by AppEngine, but mux does not. (and it's not registering its routes with net/http by itself)

That is, all you have to do, is register your mux router with net/http:

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

(straight from the docs)

Important part here is http.Handle("/", r).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top