|
9 | 9 | // IRouteGroup interface for router group |
10 | 10 | type IRouteGroup interface { |
11 | 11 | IRoutes |
12 | | - Group(prefix string, middleware ...Middleware) IRouteGroup |
| 12 | + GroupWithNone(prefix string) IRouteGroup |
| 13 | + GroupWithMore(prefix string, middleware ...Middleware) IRouteGroup |
| 14 | + Group(prefix string) IRouteGroup |
13 | 15 | } |
14 | 16 |
|
15 | 17 | // IRoutes interface for routes |
@@ -140,31 +142,41 @@ func (g *routeGroup) Match(methods []string, path string, h http.HandlerFunc) { |
140 | 142 | } |
141 | 143 | } |
142 | 144 |
|
143 | | -// Group creates a new sub router with prefix. It inherits all properties from |
144 | | -// the parent. Passing middleware overrides parent middleware but still keeps |
145 | | -// the root level middleware intact. |
146 | | -func (g *routeGroup) Group(prefix string, middleware ...Middleware) IRouteGroup { |
| 145 | +// GroupWithNone creates a new sub router with specified prefix and no middleware attached. |
| 146 | +func (g *routeGroup) GroupWithNone(prefix string) IRouteGroup { |
147 | 147 |
|
148 | | - rg := &routeGroup{ |
149 | | - prefix: g.prefix + prefix, |
150 | | - pure: g.pure, |
| 148 | + return &routeGroup{ |
| 149 | + prefix: g.prefix + prefix, |
| 150 | + pure: g.pure, |
| 151 | + middleware: make([]Middleware, 0), |
151 | 152 | } |
| 153 | +} |
152 | 154 |
|
153 | | - if len(middleware) == 0 { |
154 | | - rg.middleware = make([]Middleware, len(g.middleware)+len(middleware)) |
155 | | - copy(rg.middleware, g.middleware) |
156 | | - |
157 | | - return rg |
158 | | - } |
| 155 | +// GroupWithMore creates a new sub router with specified prefix, retains existing middleware and adds new middleware. |
| 156 | +func (g *routeGroup) GroupWithMore(prefix string, middleware ...Middleware) IRouteGroup { |
159 | 157 |
|
160 | | - if middleware[0] == nil { |
161 | | - rg.middleware = make([]Middleware, 0) |
162 | | - return rg |
| 158 | + rg := &routeGroup{ |
| 159 | + prefix: g.prefix + prefix, |
| 160 | + pure: g.pure, |
| 161 | + middleware: make([]Middleware, len(middleware)), |
163 | 162 | } |
164 | 163 |
|
165 | | - rg.middleware = make([]Middleware, len(middleware)) |
166 | 164 | copy(rg.middleware, g.pure.middleware) |
167 | 165 | rg.Use(middleware...) |
168 | 166 |
|
169 | 167 | return rg |
170 | 168 | } |
| 169 | + |
| 170 | +// Group creates a new sub router with specified prefix and retains existing middleware. |
| 171 | +func (g *routeGroup) Group(prefix string) IRouteGroup { |
| 172 | + |
| 173 | + rg := &routeGroup{ |
| 174 | + prefix: g.prefix + prefix, |
| 175 | + pure: g.pure, |
| 176 | + middleware: make([]Middleware, len(g.middleware)), |
| 177 | + } |
| 178 | + |
| 179 | + copy(rg.middleware, g.middleware) |
| 180 | + |
| 181 | + return rg |
| 182 | +} |
0 commit comments