@@ -4,195 +4,231 @@ import (
4
4
"github.com/gofiber/fiber/v3"
5
5
)
6
6
7
- type Handler func (ctx Context ) error
7
+ type Handler = func (ctx Context ) error
8
8
9
9
type Router interface {
10
10
// Get 添加GET请求处理器
11
- Get (path string , handler Handler , middlewares ... Handler ) Router
12
- // Post 添加GET请求处理器
13
- Post (path string , handler Handler , middlewares ... Handler ) Router
11
+ Get (path string , handler any , middlewares ... any ) Router
12
+ // Post 添加POST请求处理器
13
+ Post (path string , handler any , middlewares ... any ) Router
14
14
// Head 添加HEAD请求处理器
15
- Head (path string , handler Handler , middlewares ... Handler ) Router
15
+ Head (path string , handler any , middlewares ... any ) Router
16
16
// Put 添加PUT请求处理器
17
- Put (path string , handler Handler , middlewares ... Handler ) Router
17
+ Put (path string , handler any , middlewares ... any ) Router
18
18
// Delete 添加DELETE请求处理器
19
- Delete (path string , handler Handler , middlewares ... Handler ) Router
19
+ Delete (path string , handler any , middlewares ... any ) Router
20
20
// Connect 添加CONNECT请求处理器
21
- Connect (path string , handler Handler , middlewares ... Handler ) Router
21
+ Connect (path string , handler any , middlewares ... any ) Router
22
22
// Options 添加OPTIONS请求处理器
23
- Options (path string , handler Handler , middlewares ... Handler ) Router
23
+ Options (path string , handler any , middlewares ... any ) Router
24
24
// Trace 添加TRACE请求处理器
25
- Trace (path string , handler Handler , middlewares ... Handler ) Router
25
+ Trace (path string , handler any , middlewares ... any ) Router
26
26
// Patch 添加PATCH请求处理器
27
- Patch (path string , handler Handler , middlewares ... Handler ) Router
27
+ Patch (path string , handler any , middlewares ... any ) Router
28
28
// Add 添加路由处理器
29
- Add (methods []string , path string , handler Handler , middlewares ... Handler ) Router
29
+ Add (methods []string , path string , handler any , middlewares ... any ) Router
30
30
// Group 路由组
31
- Group (prefix string , handlers ... Handler ) Router
31
+ Group (prefix string , handlers ... any ) Router
32
32
}
33
33
34
34
type router struct {
35
35
app * fiber.App
36
36
}
37
37
38
38
// Get 添加GET请求处理器
39
- func (r * router ) Get (path string , handler Handler , middlewares ... Handler ) Router {
39
+ func (r * router ) Get (path string , handler any , middlewares ... any ) Router {
40
40
return r .Add ([]string {fiber .MethodGet }, path , handler , middlewares ... )
41
41
}
42
42
43
43
// Post 添加POST请求处理器
44
- func (r * router ) Post (path string , handler Handler , middlewares ... Handler ) Router {
44
+ func (r * router ) Post (path string , handler any , middlewares ... any ) Router {
45
45
return r .Add ([]string {fiber .MethodPost }, path , handler , middlewares ... )
46
46
}
47
47
48
48
// Head 添加HEAD请求处理器
49
- func (r * router ) Head (path string , handler Handler , middlewares ... Handler ) Router {
49
+ func (r * router ) Head (path string , handler any , middlewares ... any ) Router {
50
50
return r .Add ([]string {fiber .MethodHead }, path , handler , middlewares ... )
51
51
}
52
52
53
53
// Put 添加PUT请求处理器
54
- func (r * router ) Put (path string , handler Handler , middlewares ... Handler ) Router {
54
+ func (r * router ) Put (path string , handler any , middlewares ... any ) Router {
55
55
return r .Add ([]string {fiber .MethodPut }, path , handler , middlewares ... )
56
56
}
57
57
58
58
// Delete 添加DELETE请求处理器
59
- func (r * router ) Delete (path string , handler Handler , middlewares ... Handler ) Router {
59
+ func (r * router ) Delete (path string , handler any , middlewares ... any ) Router {
60
60
return r .Add ([]string {fiber .MethodDelete }, path , handler , middlewares ... )
61
61
}
62
62
63
63
// Connect 添加CONNECT请求处理器
64
- func (r * router ) Connect (path string , handler Handler , middlewares ... Handler ) Router {
64
+ func (r * router ) Connect (path string , handler any , middlewares ... any ) Router {
65
65
return r .Add ([]string {fiber .MethodConnect }, path , handler , middlewares ... )
66
66
}
67
67
68
68
// Options 添加OPTIONS请求处理器
69
- func (r * router ) Options (path string , handler Handler , middlewares ... Handler ) Router {
69
+ func (r * router ) Options (path string , handler any , middlewares ... any ) Router {
70
70
return r .Add ([]string {fiber .MethodOptions }, path , handler , middlewares ... )
71
71
}
72
72
73
73
// Trace 添加TRACE请求处理器
74
- func (r * router ) Trace (path string , handler Handler , middlewares ... Handler ) Router {
74
+ func (r * router ) Trace (path string , handler any , middlewares ... any ) Router {
75
75
return r .Add ([]string {fiber .MethodTrace }, path , handler , middlewares ... )
76
76
}
77
77
78
78
// Patch 添加PATCH请求处理器
79
- func (r * router ) Patch (path string , handler Handler , middlewares ... Handler ) Router {
79
+ func (r * router ) Patch (path string , handler any , middlewares ... any ) Router {
80
80
return r .Add ([]string {fiber .MethodPatch }, path , handler , middlewares ... )
81
81
}
82
82
83
83
// All 添加任意请求处理器
84
- func (r * router ) All (path string , handler Handler , middlewares ... Handler ) Router {
84
+ func (r * router ) All (path string , handler any , middlewares ... any ) Router {
85
85
return r .Add (fiber .DefaultMethods , path , handler , middlewares ... )
86
86
}
87
87
88
88
// Add 添加路由处理器
89
- func (r * router ) Add (methods []string , path string , handler Handler , middlewares ... Handler ) Router {
89
+ func (r * router ) Add (methods []string , path string , handler any , middlewares ... any ) Router {
90
90
handlers := make ([]fiber.Handler , 0 , len (middlewares ))
91
91
for i := range middlewares {
92
92
middleware := middlewares [i ]
93
- handlers = append (handlers , func (ctx fiber.Ctx ) error {
94
- return middleware (& context {Ctx : ctx })
95
- })
93
+
94
+ switch h := middleware .(type ) {
95
+ case fiber.Handler :
96
+ handlers = append (handlers , h )
97
+ case Handler :
98
+ handlers = append (handlers , func (ctx fiber.Ctx ) error {
99
+ return h (& context {Ctx : ctx })
100
+ })
101
+ }
102
+ }
103
+
104
+ switch h := handler .(type ) {
105
+ case fiber.Handler :
106
+ r .app .Add (methods , path , h , handlers ... )
107
+ case Handler :
108
+ r .app .Add (methods , path , func (ctx fiber.Ctx ) error {
109
+ return h (& context {Ctx : ctx })
110
+ }, handlers ... )
96
111
}
97
112
98
- r .app .Add (methods , path , func (ctx fiber.Ctx ) error {
99
- return handler (& context {Ctx : ctx })
100
- }, handlers ... )
101
113
return r
102
114
}
103
115
104
116
// Group 路由组
105
- func (r * router ) Group (prefix string , handlers ... Handler ) Router {
106
- list := make ([]fiber.Handler , 0 , len (handlers ))
107
- for i := range handlers {
108
- handler := handlers [i ]
109
- list = append (list , func (ctx fiber.Ctx ) error {
110
- return handler (& context {Ctx : ctx })
111
- })
117
+ func (r * router ) Group (prefix string , middlewares ... any ) Router {
118
+ handlers := make ([]fiber.Handler , 0 , len (middlewares ))
119
+ for i := range middlewares {
120
+ middleware := middlewares [i ]
121
+
122
+ switch h := middleware .(type ) {
123
+ case fiber.Handler :
124
+ handlers = append (handlers , h )
125
+ case Handler :
126
+ handlers = append (handlers , func (ctx fiber.Ctx ) error {
127
+ return h (& context {Ctx : ctx })
128
+ })
129
+ }
112
130
}
113
131
114
- return & routeGroup {router : r .app .Group (prefix )}
132
+ return & routeGroup {router : r .app .Group (prefix , handlers ... )}
115
133
}
116
134
117
135
type routeGroup struct {
118
136
router fiber.Router
119
137
}
120
138
121
139
// Get 添加GET请求处理器
122
- func (r * routeGroup ) Get (path string , handler Handler , middlewares ... Handler ) Router {
140
+ func (r * routeGroup ) Get (path string , handler any , middlewares ... any ) Router {
123
141
return r .Add ([]string {fiber .MethodGet }, path , handler , middlewares ... )
124
142
}
125
143
126
144
// Post 添加GET请求处理器
127
- func (r * routeGroup ) Post (path string , handler Handler , middlewares ... Handler ) Router {
145
+ func (r * routeGroup ) Post (path string , handler any , middlewares ... any ) Router {
128
146
return r .Add ([]string {fiber .MethodPost }, path , handler , middlewares ... )
129
147
}
130
148
131
149
// Head 添加HEAD请求处理器
132
- func (r * routeGroup ) Head (path string , handler Handler , middlewares ... Handler ) Router {
150
+ func (r * routeGroup ) Head (path string , handler any , middlewares ... any ) Router {
133
151
return r .Add ([]string {fiber .MethodHead }, path , handler , middlewares ... )
134
152
}
135
153
136
154
// Put 添加PUT请求处理器
137
- func (r * routeGroup ) Put (path string , handler Handler , middlewares ... Handler ) Router {
155
+ func (r * routeGroup ) Put (path string , handler any , middlewares ... any ) Router {
138
156
return r .Add ([]string {fiber .MethodPut }, path , handler , middlewares ... )
139
157
}
140
158
141
159
// Delete 添加DELETE请求处理器
142
- func (r * routeGroup ) Delete (path string , handler Handler , middlewares ... Handler ) Router {
160
+ func (r * routeGroup ) Delete (path string , handler any , middlewares ... any ) Router {
143
161
return r .Add ([]string {fiber .MethodDelete }, path , handler , middlewares ... )
144
162
}
145
163
146
164
// Connect 添加CONNECT请求处理器
147
- func (r * routeGroup ) Connect (path string , handler Handler , middlewares ... Handler ) Router {
165
+ func (r * routeGroup ) Connect (path string , handler any , middlewares ... any ) Router {
148
166
return r .Add ([]string {fiber .MethodConnect }, path , handler , middlewares ... )
149
167
}
150
168
151
169
// Options 添加OPTIONS请求处理器
152
- func (r * routeGroup ) Options (path string , handler Handler , middlewares ... Handler ) Router {
170
+ func (r * routeGroup ) Options (path string , handler any , middlewares ... any ) Router {
153
171
return r .Add ([]string {fiber .MethodOptions }, path , handler , middlewares ... )
154
172
}
155
173
156
174
// Trace 添加TRACE请求处理器
157
- func (r * routeGroup ) Trace (path string , handler Handler , middlewares ... Handler ) Router {
175
+ func (r * routeGroup ) Trace (path string , handler any , middlewares ... any ) Router {
158
176
return r .Add ([]string {fiber .MethodTrace }, path , handler , middlewares ... )
159
177
}
160
178
161
179
// Patch 添加PATCH请求处理器
162
- func (r * routeGroup ) Patch (path string , handler Handler , middlewares ... Handler ) Router {
180
+ func (r * routeGroup ) Patch (path string , handler any , middlewares ... any ) Router {
163
181
return r .Add ([]string {fiber .MethodPatch }, path , handler , middlewares ... )
164
182
}
165
183
166
184
// All 添加任意请求处理器
167
- func (r * routeGroup ) All (path string , handler Handler , middlewares ... Handler ) Router {
185
+ func (r * routeGroup ) All (path string , handler any , middlewares ... any ) Router {
168
186
return r .Add (fiber .DefaultMethods , path , handler , middlewares ... )
169
187
}
170
188
171
189
// Add 添加路由处理器
172
- func (r * routeGroup ) Add (methods []string , path string , handler Handler , middlewares ... Handler ) Router {
190
+ func (r * routeGroup ) Add (methods []string , path string , handler any , middlewares ... any ) Router {
173
191
handlers := make ([]fiber.Handler , 0 , len (middlewares ))
174
192
for i := range middlewares {
175
193
middleware := middlewares [i ]
176
- handlers = append (handlers , func (ctx fiber.Ctx ) error {
177
- return middleware (& context {Ctx : ctx })
178
- })
194
+
195
+ switch h := middleware .(type ) {
196
+ case fiber.Handler :
197
+ handlers = append (handlers , h )
198
+ case Handler :
199
+ handlers = append (handlers , func (ctx fiber.Ctx ) error {
200
+ return h (& context {Ctx : ctx })
201
+ })
202
+ }
203
+ }
204
+
205
+ switch h := handler .(type ) {
206
+ case fiber.Handler :
207
+ r .router .Add (methods , path , h , handlers ... )
208
+ case Handler :
209
+ r .router .Add (methods , path , func (ctx fiber.Ctx ) error {
210
+ return h (& context {Ctx : ctx })
211
+ }, handlers ... )
179
212
}
180
213
181
- r .router .Add (methods , path , func (ctx fiber.Ctx ) error {
182
- return handler (& context {Ctx : ctx })
183
- }, handlers ... )
184
214
return r
185
215
}
186
216
187
217
// Group 路由组
188
- func (r * routeGroup ) Group (prefix string , handlers ... Handler ) Router {
189
- list := make ([]fiber.Handler , 0 , len (handlers ))
190
- for i := range handlers {
191
- handler := handlers [i ]
192
- list = append (list , func (ctx fiber.Ctx ) error {
193
- return handler (& context {Ctx : ctx })
194
- })
218
+ func (r * routeGroup ) Group (prefix string , middlewares ... any ) Router {
219
+ handlers := make ([]fiber.Handler , 0 , len (middlewares ))
220
+ for i := range middlewares {
221
+ middleware := middlewares [i ]
222
+
223
+ switch h := middleware .(type ) {
224
+ case fiber.Handler :
225
+ handlers = append (handlers , h )
226
+ case Handler :
227
+ handlers = append (handlers , func (ctx fiber.Ctx ) error {
228
+ return h (& context {Ctx : ctx })
229
+ })
230
+ }
195
231
}
196
232
197
- return & routeGroup {router : r .router .Group (prefix )}
233
+ return & routeGroup {router : r .router .Group (prefix , handlers ... )}
198
234
}
0 commit comments