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")
...
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
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)
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With