Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GAE Golang Gorilla mux - 404 page not found

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")
...
like image 259
rlasjunies Avatar asked Dec 29 '12 11:12

rlasjunies


2 Answers

You can also pass the router as the second argument to ListenAndServe since it implements the http.Handler interface.

router := mux.NewRouter()
router.HandleFunc("/", HomeHandler)
http.ListenAndServe(":8080", router) // pass the router here
like image 93
The Fool Avatar answered Oct 03 '22 13:10

The Fool


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).

like image 35
Igor Kharin Avatar answered Oct 03 '22 11:10

Igor Kharin