Merge pull request #4582 from flycash/webMock
Optimize AddAutoPrefix: only register one router in case insensitive mode
This commit is contained in:
commit
7579d83551
@ -34,7 +34,8 @@
|
||||
- Integration: DeepSource [4560](https://github.com/beego/beego/pull/4560)
|
||||
- Integration: Remove unnecessary function call [4577](https://github.com/beego/beego/pull/4577)
|
||||
- Feature issue #4402 finish router get example. [4416](https://github.com/beego/beego/pull/4416)
|
||||
- Proposal: Add Bind() method for web.Controller [4491](https://github.com/beego/beego/issues/4491)
|
||||
- Proposal: Add Bind() method for `web.Controller` [4491](https://github.com/beego/beego/issues/4579)
|
||||
- Optimize AddAutoPrefix: only register one router in case-insensitive mode. [4582](https://github.com/beego/beego/pull/4582)
|
||||
|
||||
## Fix Sonar
|
||||
- [4473](https://github.com/beego/beego/pull/4473)
|
||||
|
||||
@ -732,23 +732,33 @@ func (p *ControllerRegister) AddAutoPrefix(prefix string, c ControllerInterface)
|
||||
ct := reflect.Indirect(reflectVal).Type()
|
||||
controllerName := strings.TrimSuffix(ct.Name(), "Controller")
|
||||
for i := 0; i < rt.NumMethod(); i++ {
|
||||
if !utils.InSlice(rt.Method(i).Name, exceptMethod) {
|
||||
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)
|
||||
methodName := rt.Method(i).Name
|
||||
if !utils.InSlice(methodName, exceptMethod) {
|
||||
p.addAutoPrefixMethod(prefix, controllerName, methodName, ct)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
route := p.createBeegoRouter(ct, pattern)
|
||||
route.methods = map[string]string{"*": rt.Method(i).Name}
|
||||
func (p *ControllerRegister) addAutoPrefixMethod(prefix, controllerName, methodName string, ctrl reflect.Type) {
|
||||
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 {
|
||||
|
||||
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, patternFix, route)
|
||||
p.addToRouter(m, patternFixInit, route)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// InsertFilter Add a FilterFunc with pattern rule and action constant.
|
||||
// params is for:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user