-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgroup.go
37 lines (31 loc) · 870 Bytes
/
group.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package GoMatrix
import "log"
type RouterGroup struct {
// 当前分组前缀
prefix string
// 分组挂载的中间件
middlewares HandlersChain
// 父节点
parent *RouterGroup
// 引擎统一化协调管理
engine *Engine
}
func (group *RouterGroup) Group(prefix string) *RouterGroup {
engine := group.engine
newGroup := &RouterGroup{
prefix: group.prefix + prefix,
parent: group,
engine: engine,
}
engine.groups = append(engine.groups, newGroup)
return newGroup
}
func (group *RouterGroup) addRoute(method string, comp string, handler HandlerFunc) {
pattern := group.prefix + comp
log.Printf("Route %4s - %s", method, pattern)
group.engine.router.addRoute(method, pattern, handler)
}
// 在分组上挂载中间件
func (group *RouterGroup) Use(middleware ...HandlerFunc) {
group.middlewares = append(group.middlewares, middleware...)
}