Optimize AddAutoPrefix: only register one router if it's not case sensetive
This commit is contained in:
parent
3d511fd30b
commit
d6f80689a0
@ -732,22 +732,32 @@ func (p *ControllerRegister) AddAutoPrefix(prefix string, c ControllerInterface)
|
|||||||
ct := reflect.Indirect(reflectVal).Type()
|
ct := reflect.Indirect(reflectVal).Type()
|
||||||
controllerName := strings.TrimSuffix(ct.Name(), "Controller")
|
controllerName := strings.TrimSuffix(ct.Name(), "Controller")
|
||||||
for i := 0; i < rt.NumMethod(); i++ {
|
for i := 0; i < rt.NumMethod(); i++ {
|
||||||
if !utils.InSlice(rt.Method(i).Name, exceptMethod) {
|
methodName := rt.Method(i).Name
|
||||||
pattern := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name), "*")
|
if !utils.InSlice(methodName, exceptMethod) {
|
||||||
patternInit := path.Join(prefix, controllerName, rt.Method(i).Name, "*")
|
p.addAutoPrefixMethod(prefix, controllerName, methodName, ct)
|
||||||
patternFix := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(rt.Method(i).Name))
|
}
|
||||||
patternFixInit := path.Join(prefix, controllerName, rt.Method(i).Name)
|
}
|
||||||
|
}
|
||||||
|
|
||||||
route := p.createBeegoRouter(ct, pattern)
|
func (p *ControllerRegister) addAutoPrefixMethod(prefix, controllerName, methodName string, ctrl reflect.Type) {
|
||||||
route.methods = map[string]string{"*": rt.Method(i).Name}
|
pattern := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(methodName), "*")
|
||||||
|
patternInit := path.Join(prefix, controllerName, methodName, "*")
|
||||||
|
patternFix := path.Join(prefix, strings.ToLower(controllerName), strings.ToLower(methodName))
|
||||||
|
patternFixInit := path.Join(prefix, controllerName, methodName)
|
||||||
|
|
||||||
|
route := p.createBeegoRouter(ctrl, pattern)
|
||||||
|
route.methods = map[string]string{"*": methodName}
|
||||||
for m := range HTTPMETHOD {
|
for m := range HTTPMETHOD {
|
||||||
|
|
||||||
p.addToRouter(m, pattern, route)
|
p.addToRouter(m, pattern, route)
|
||||||
|
|
||||||
|
// only case sensitive, we add three more routes
|
||||||
|
if p.cfg.RouterCaseSensitive {
|
||||||
p.addToRouter(m, patternInit, route)
|
p.addToRouter(m, patternInit, route)
|
||||||
p.addToRouter(m, patternFix, route)
|
p.addToRouter(m, patternFix, route)
|
||||||
p.addToRouter(m, patternFixInit, route)
|
p.addToRouter(m, patternFixInit, route)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// InsertFilter Add a FilterFunc with pattern rule and action constant.
|
// InsertFilter Add a FilterFunc with pattern rule and action constant.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user