1
0
mirror of https://github.com/astaxie/beego.git synced 2024-12-22 21:30:49 +00:00

beego: autorouter params

This commit is contained in:
astaxie 2014-07-01 16:55:23 +08:00
parent 17a9c3c3a9
commit 14dee37a21

View File

@ -346,19 +346,23 @@ func (p *ControllerRegistor) AddAutoPrefix(prefix string, c ControllerInterface)
reflectVal := reflect.ValueOf(c)
rt := reflectVal.Type()
ct := reflect.Indirect(reflectVal).Type()
controllerName := strings.ToLower(strings.TrimSuffix(ct.Name(), "Controller"))
controllerName := strings.TrimSuffix(ct.Name(), "Controller")
for i := 0; i < rt.NumMethod(); i++ {
if !utils.InSlice(rt.Method(i).Name, exceptMethod) {
route := &controllerInfo{}
route.routerType = routerTypeBeego
route.methods = map[string]string{"*": rt.Method(i).Name}
route.controllerType = ct
pattern := path.Join(prefix, controllerName, strings.ToLower(rt.Method(i).Name), "*")
patternfix := path.Join(prefix, controllerName, strings.ToLower(rt.Method(i).Name))
pattern := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name), "*")
patternInit := path.Join(prefix, controllerName, rt.Method(i).Name, "*")
patternfix := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name))
patternfixInit := path.Join(prefix, controllerName, rt.Method(i).Name)
route.pattern = pattern
for _, m := range HTTPMETHOD {
p.addToRouter(m, pattern, route)
p.addToRouter(m, patternInit, route)
p.addToRouter(m, patternfix, route)
p.addToRouter(m, patternfixInit, route)
}
}
}
@ -603,7 +607,7 @@ func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request)
if !findrouter {
if t, ok := p.routers[r.Method]; ok {
runObject, p := t.Match(strings.ToLower(r.URL.Path))
runObject, p := t.Match(r.URL.Path)
if r, ok := runObject.(*controllerInfo); ok {
routerInfo = r
findrouter = true