github.com/gogf/gf@v1.16.9/net/ghttp/ghttp_server_router_middleware.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package ghttp 8 9 import ( 10 "github.com/gogf/gf/debug/gdebug" 11 "reflect" 12 ) 13 14 const ( 15 // The default route pattern for global middleware. 16 defaultMiddlewarePattern = "/*" 17 ) 18 19 // BindMiddleware registers one or more global middleware to the server. 20 // Global middleware can be used standalone without service handler, which intercepts all dynamic requests 21 // before or after service handler. The parameter <pattern> specifies what route pattern the middleware intercepts, 22 // which is usually a "fuzzy" pattern like "/:name", "/*any" or "/{field}". 23 func (s *Server) BindMiddleware(pattern string, handlers ...HandlerFunc) { 24 for _, handler := range handlers { 25 s.setHandler(pattern, &handlerItem{ 26 Type: handlerTypeMiddleware, 27 Name: gdebug.FuncPath(handler), 28 Info: handlerFuncInfo{ 29 Func: handler, 30 Type: reflect.TypeOf(handler), 31 }, 32 }) 33 } 34 } 35 36 // BindMiddlewareDefault registers one or more global middleware to the server using default pattern "/*". 37 // Global middleware can be used standalone without service handler, which intercepts all dynamic requests 38 // before or after service handler. 39 func (s *Server) BindMiddlewareDefault(handlers ...HandlerFunc) { 40 for _, handler := range handlers { 41 s.setHandler(defaultMiddlewarePattern, &handlerItem{ 42 Type: handlerTypeMiddleware, 43 Name: gdebug.FuncPath(handler), 44 Info: handlerFuncInfo{ 45 Func: handler, 46 Type: reflect.TypeOf(handler), 47 }, 48 }) 49 } 50 } 51 52 // Use is alias of BindMiddlewareDefault. 53 // See BindMiddlewareDefault. 54 func (s *Server) Use(handlers ...HandlerFunc) { 55 s.BindMiddlewareDefault(handlers...) 56 }