From dc281f790c88eebdba270e7705f087d50d1a570f Mon Sep 17 00:00:00 2001 From: A1lo Date: Wed, 8 Oct 2025 11:32:03 +0800 Subject: [PATCH] feat(route): add handlers chain in RouteInfo --- gin.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/gin.go b/gin.go index 1965a429..51718019 100644 --- a/gin.go +++ b/gin.go @@ -12,6 +12,7 @@ import ( "os" "path" "regexp" + "slices" "strings" "sync" @@ -68,10 +69,11 @@ func (c HandlersChain) Last() HandlerFunc { // RouteInfo represents a request route's specification which contains method and path and its handler. type RouteInfo struct { - Method string - Path string - Handler string - HandlerFunc HandlerFunc + Method string + Path string + Handler string + HandlerFunc HandlerFunc + HandlersChain HandlersChain } // RoutesInfo defines a RouteInfo slice. @@ -389,10 +391,11 @@ func iterate(path, method string, routes RoutesInfo, root *node) RoutesInfo { if len(root.handlers) > 0 { handlerFunc := root.handlers.Last() routes = append(routes, RouteInfo{ - Method: method, - Path: path, - Handler: nameOfFunction(handlerFunc), - HandlerFunc: handlerFunc, + Method: method, + Path: path, + Handler: nameOfFunction(handlerFunc), + HandlerFunc: handlerFunc, + HandlersChain: slices.Clone(root.handlers), }) } for _, child := range root.children {