diff --git a/admin.go b/admin.go index dada6523..ccf0bbce 100644 --- a/admin.go +++ b/admin.go @@ -121,6 +121,10 @@ func listConf(rw http.ResponseWriter, r *http.Request) { fmt.Fprintln(rw, "AdminHttpPort:", AdminHttpPort) case "router": fmt.Fprintln(rw, "Print all router infomation:") + for method, t := range BeeApp.Handlers.routers { + fmt.Fprintln(rw, "Method:", method) + printTree(rw, t) + } // @todo print routers case "filter": fmt.Fprintln(rw, "Print all filter infomation:") @@ -163,6 +167,26 @@ func listConf(rw http.ResponseWriter, r *http.Request) { } } +func printTree(rw http.ResponseWriter, t *Tree) { + for _, tr := range t.fixrouters { + printTree(rw, tr) + } + if t.wildcard != nil { + printTree(rw, t.wildcard) + } + for _, l := range t.leaves { + if v, ok := l.runObject.(*controllerInfo); ok { + if v.routerType == routerTypeBeego { + fmt.Fprintln(rw, v.pattern, v.methods, v.controllerType.Name()) + } else if v.routerType == routerTypeRESTFul { + fmt.Fprintln(rw, v.pattern, v.methods) + } else if v.routerType == routerTypeHandler { + fmt.Fprintln(rw, v.pattern, "handler") + } + } + } +} + // ProfIndex is a http.Handler for showing profile command. // it's in url pattern "/prof" in admin module. func profIndex(rw http.ResponseWriter, r *http.Request) {