@@ -86,6 +86,7 @@ type Builder struct {
86
86
apis []Register
87
87
overrideMiddleware bool
88
88
mdws []echo.MiddlewareFunc
89
+ preMDWs []echo.MiddlewareFunc
89
90
gzipSkipper middleware.Skipper
90
91
activatePprof bool
91
92
}
@@ -97,6 +98,13 @@ func NewBuilder(addr string) *Builder {
97
98
}
98
99
}
99
100
101
+ // PreMiddleware is adding the provided middleware into the Builder.
102
+ // Each mdw added here, will be executed before the router.
103
+ func (b * Builder ) PreMiddleware (mdw echo.MiddlewareFunc ) * Builder {
104
+ b .preMDWs = append (b .preMDWs , mdw )
105
+ return b
106
+ }
107
+
100
108
// Middleware is adding the provided middleware into the Builder
101
109
// Order matters, add the middleware in the order you would like to see them started.
102
110
func (b * Builder ) Middleware (mdw echo.MiddlewareFunc ) * Builder {
@@ -205,6 +213,7 @@ func (b *Builder) build() (*server, error) {
205
213
apis : b .apis ,
206
214
e : e ,
207
215
mdws : b .mdws ,
216
+ preMDWs : b .preMDWs ,
208
217
shutdownTimeout : 30 * time .Second ,
209
218
activatePprof : b .activatePprof ,
210
219
}, nil
@@ -216,6 +225,7 @@ type server struct {
216
225
apis []Register
217
226
e * echo.Echo
218
227
mdws []echo.MiddlewareFunc
228
+ preMDWs []echo.MiddlewareFunc
219
229
shutdownTimeout time.Duration
220
230
activatePprof bool
221
231
}
@@ -228,6 +238,9 @@ func (s *server) Initialize() error {
228
238
// init global middleware
229
239
// Remove trailing slash middleware a trailing slash from the request URI
230
240
s .e .Pre (middleware .RemoveTrailingSlash ())
241
+ for _ , p := range s .preMDWs {
242
+ s .e .Pre (p )
243
+ }
231
244
for _ , mdw := range s .mdws {
232
245
s .e .Use (mdw )
233
246
}
0 commit comments