From d5a35164e5348c7fa380bb02365af88da4f13bbb Mon Sep 17 00:00:00 2001 From: John Date: Sun, 8 Apr 2018 23:47:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9Bghttp=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E6=A3=80=E7=B4=A2=E6=96=B9=E6=B3=95=EF=BC=8C=E5=9F=9F=E5=90=8D?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E5=A2=9E=E5=8A=A0Hook=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/net/ghttp/http_server_domain.go | 11 +++++++++++ g/net/ghttp/http_server_handler.go | 3 +-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/g/net/ghttp/http_server_domain.go b/g/net/ghttp/http_server_domain.go index 51d24054a..a16ea51a8 100644 --- a/g/net/ghttp/http_server_domain.go +++ b/g/net/ghttp/http_server_domain.go @@ -108,6 +108,17 @@ func (d *Domain) BindControllerMethod(pattern string, c Controller, methods stri return nil } +// 绑定指定的hook回调函数, hook参数的值由ghttp server设定,参数不区分大小写 +// 目前hook支持:Init/Shut +func (d *Domain)BindHookHandler(pattern string, hook string, handler HandlerFunc) error { + for domain, _ := range d.m { + if err := d.s.BindHookHandler(pattern + "@" + domain, hook, handler); err != nil { + return err + } + } + return nil +} + // 绑定URI服务注册的Init回调函数,回调时按照注册顺序执行 // Init回调调用时机为请求进入控制器之前,初始化Request对象之后 func (d *Domain)BindHookHandlerInit(pattern string, handler HandlerFunc) error { diff --git a/g/net/ghttp/http_server_handler.go b/g/net/ghttp/http_server_handler.go index 6ac35e425..4a16d8b2f 100644 --- a/g/net/ghttp/http_server_handler.go +++ b/g/net/ghttp/http_server_handler.go @@ -92,8 +92,7 @@ func (s *Server)callHandler(h *HandlerItem, r *Request) { // 按照指定hook回调函数的注册顺序进行调用 func (s *Server)callHookHandler(r *Request, hook string) { - var l []HandlerFunc - l = s.getHookList(gDEFAULT_DOMAIN, r.Method, r.URL.Path, hook) + l := s.getHookList(gDEFAULT_DOMAIN, r.Method, r.URL.Path, hook) if l == nil { l = s.getHookList(strings.Split(r.Host, ":")[0], r.Method, r.URL.Path, hook) }