Skip to content

Commit 610a734

Browse files
authored
chore: refactor gateway middlewares (#5042)
1 parent b0b31f3 commit 610a734

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

gateway/server.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,14 @@ import (
2727
const defaultHttpScheme = "http"
2828

2929
type (
30-
// MiddlewareFunc defines the function signature for middleware.
31-
MiddlewareFunc func(next http.HandlerFunc) http.HandlerFunc
32-
3330
// Server is a gateway server.
3431
Server struct {
3532
*rest.Server
3633
upstreams []Upstream
3734
conns []zrpc.Client
3835
processHeader func(http.Header) []string
39-
middlewares []MiddlewareFunc
4036
dialer func(conf zrpc.RpcClientConf) zrpc.Client
37+
middlewares []rest.Middleware
4138
}
4239

4340
// Option defines the method to customize Server.
@@ -107,6 +104,13 @@ func (s *Server) build() error {
107104
})
108105
}
109106

107+
func (s *Server) buildChainHandler(handler http.HandlerFunc) http.HandlerFunc {
108+
for i := len(s.middlewares) - 1; i >= 0; i-- {
109+
handler = s.middlewares[i](handler)
110+
}
111+
return handler
112+
}
113+
110114
func (s *Server) buildGrpcHandler(source grpcurl.DescriptorSource, resolver jsonpb.AnyResolver,
111115
cli zrpc.Client, rpcPath string) func(http.ResponseWriter, *http.Request) {
112116
handler := func(w http.ResponseWriter, r *http.Request) {
@@ -273,19 +277,12 @@ func WithHeaderProcessor(processHeader func(http.Header) []string) func(*Server)
273277

274278
// WithMiddleware adds one or more middleware functions to process HTTP requests.
275279
// Multiple middlewares will be executed in the order they were passed (like an onion model).
276-
func WithMiddleware(middlewares ...MiddlewareFunc) func(*Server) {
280+
func WithMiddleware(middlewares ...rest.Middleware) func(*Server) {
277281
return func(s *Server) {
278282
s.middlewares = append(s.middlewares, middlewares...)
279283
}
280284
}
281285

282-
func (s *Server) buildChainHandler(handler http.HandlerFunc) http.HandlerFunc {
283-
for i := len(s.middlewares) - 1; i >= 0; i-- {
284-
handler = s.middlewares[i](handler)
285-
}
286-
return handler
287-
}
288-
289286
func buildRequestWithNewTarget(r *http.Request, target *HttpClientConf) (*http.Request, error) {
290287
u := *r.URL
291288
u.Host = target.Target

0 commit comments

Comments
 (0)