From 75d9e312f3167247f78ce26bbb61a659ebe4bd2d Mon Sep 17 00:00:00 2001 From: John Date: Mon, 27 Aug 2018 22:44:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BD=93=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E5=B8=A6=E5=90=8E=E7=BC=80/=E6=97=B6=E7=9A=84=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E9=87=8D=E5=A4=8D=E6=B3=A8=E5=86=8C=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/net/ghttp/ghttp_server_router.go | 21 ++++++++++----------- geg/other/test.go | 13 +++++++++++-- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/g/net/ghttp/ghttp_server_router.go b/g/net/ghttp/ghttp_server_router.go index 5a0f65205..653d64308 100644 --- a/g/net/ghttp/ghttp_server_router.go +++ b/g/net/ghttp/ghttp_server_router.go @@ -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, diff --git a/geg/other/test.go b/geg/other/test.go index f0df82ecf..f2d21eb8d 100644 --- a/geg/other/test.go +++ b/geg/other/test.go @@ -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() } \ No newline at end of file