mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
修复当路由带后缀/时的路由重复注册判断失效问题
This commit is contained in:
@ -35,7 +35,7 @@ func (s *Server)parsePattern(pattern string) (domain, method, uri string, err er
|
||||
if uri == "" {
|
||||
err = errors.New("invalid pattern")
|
||||
}
|
||||
// 去掉末尾的"/"符号,与路由匹配时处理一直
|
||||
// 去掉末尾的"/"符号,与路由匹配时处理一致
|
||||
if uri != "/" {
|
||||
uri = strings.TrimRight(uri, "/")
|
||||
}
|
||||
@ -61,7 +61,15 @@ func (s *Server) setHandler(pattern string, handler *handlerItem, hook ... strin
|
||||
if s.Status() == SERVER_STATUS_RUNNING {
|
||||
return errors.New("cannot bind handler while server running")
|
||||
}
|
||||
regkey := fmt.Sprintf(`%s@%v`, pattern, hook)
|
||||
var hookName string
|
||||
if len(hook) > 0 {
|
||||
hookName = hook[0]
|
||||
}
|
||||
domain, method, uri, err := s.parsePattern(pattern)
|
||||
if err != nil {
|
||||
return errors.New("invalid pattern")
|
||||
}
|
||||
regkey := s.hookHandlerKey(hookName, method, uri, domain)
|
||||
caller := s.getHandlerRegisterCallerLine(handler)
|
||||
if line, ok := s.routesMap[regkey]; ok {
|
||||
s := fmt.Sprintf(`duplicated route registry "%s" in %s , former in %s`, pattern, caller, line)
|
||||
@ -75,15 +83,6 @@ func (s *Server) setHandler(pattern string, handler *handlerItem, hook ... strin
|
||||
}()
|
||||
}
|
||||
|
||||
var hookName string
|
||||
if len(hook) > 0 {
|
||||
hookName = hook[0]
|
||||
}
|
||||
domain, method, uri, err := s.parsePattern(pattern)
|
||||
if err != nil {
|
||||
return errors.New("invalid pattern")
|
||||
}
|
||||
|
||||
// 路由对象
|
||||
handler.router = &Router {
|
||||
Uri : uri,
|
||||
|
||||
@ -1,10 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"gitee.com/johng/gf/g"
|
||||
"gitee.com/johng/gf/g/net/ghttp"
|
||||
"fmt"
|
||||
"gitee.com/johng/gf/g/os/gfile"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println(gfile.RealPath())
|
||||
s := g.Server()
|
||||
s.BindHandler("/admin", func(r *ghttp.Request) {
|
||||
fmt.Println("admin")
|
||||
})
|
||||
s.BindHandler("/admin/", func(r *ghttp.Request) {
|
||||
fmt.Println("admin/")
|
||||
})
|
||||
s.SetPort(8199)
|
||||
s.Run()
|
||||
}
|
||||
Reference in New Issue
Block a user