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  }