Browse Source

添加中间件

yjp 1 year ago
parent
commit
25c19d2bf4

+ 45 - 5
convenient/domain_gateway/configuration/configuration.go

@@ -14,7 +14,12 @@ import (
 type Option func(options *Options)
 
 type Options struct {
-	serviceApiVersion string
+	serviceApiVersion                  string
+	globalMiddlewares                  []api.Handler
+	createMiddlewares                  []api.Handler
+	deleteMiddlewares                  []api.Handler
+	queryMiddlewares                   []api.Handler
+	queryRegisteredServicesMiddlewares []api.Handler
 }
 
 func WithServiceApiVersion(serviceApiVersion string) Option {
@@ -23,6 +28,36 @@ func WithServiceApiVersion(serviceApiVersion string) Option {
 	}
 }
 
+func WithGlobalMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.globalMiddlewares = middlewares
+	}
+}
+
+func WithCreateMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.createMiddlewares = middlewares
+	}
+}
+
+func WithDeleteMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.deleteMiddlewares = middlewares
+	}
+}
+
+func WithQueryMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.queryMiddlewares = middlewares
+	}
+}
+
+func WithQueryRegisteredServicesMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.queryRegisteredServicesMiddlewares = middlewares
+	}
+}
+
 var serviceBaseUrlMap sync.Map
 
 func RegisterService(serviceShortName string, baseUrl string) {
@@ -36,6 +71,11 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 		opt(options)
 	}
 
+	createMiddlewares := append(options.globalMiddlewares, options.createMiddlewares...)
+	deleteMiddlewares := append(options.globalMiddlewares, options.deleteMiddlewares...)
+	queryMiddlewares := append(options.globalMiddlewares, options.queryMiddlewares...)
+	queryRegisteredServicesMiddlewares := append(options.globalMiddlewares, options.queryRegisteredServicesMiddlewares...)
+
 	builder := gw.NewBuilder(api.RouterPrefix, "")
 
 	// 创建
@@ -81,7 +121,7 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 
 					return serviceUrl, nil
 				})), nil).
-		Build()
+		Build(createMiddlewares...)
 
 	// 删除
 	builder.
@@ -126,7 +166,7 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 
 					return serviceUrl, nil
 				})), nil).
-		Build()
+		Build(deleteMiddlewares...)
 
 	// 查询
 	builder.
@@ -168,7 +208,7 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 
 					return serviceUrl, nil
 				})), nil).
-		Build()
+		Build(queryMiddlewares...)
 
 	// 查询注册的服务
 	builder.
@@ -183,5 +223,5 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 			c.JSON(http.StatusOK, gin.H{
 				"services": serviceShortNames,
 			})
-		})
+		}, queryRegisteredServicesMiddlewares...)
 }

+ 36 - 4
convenient/domain_gateway/sql_executor/sql_executor.go

@@ -14,7 +14,11 @@ import (
 type Option func(options *Options)
 
 type Options struct {
-	serviceApiVersion string
+	serviceApiVersion                  string
+	globalMiddlewares                  []api.Handler
+	executeSqlMiddlewares              []api.Handler
+	sqlExecuteLogMiddlewares           []api.Handler
+	queryRegisteredServicesMiddlewares []api.Handler
 }
 
 func WithServiceApiVersion(serviceApiVersion string) Option {
@@ -23,6 +27,30 @@ func WithServiceApiVersion(serviceApiVersion string) Option {
 	}
 }
 
+func WithGlobalMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.globalMiddlewares = middlewares
+	}
+}
+
+func WithExecuteSqlMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.executeSqlMiddlewares = middlewares
+	}
+}
+
+func WithSqlExecuteLogMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.sqlExecuteLogMiddlewares = middlewares
+	}
+}
+
+func WithQueryRegisteredServicesMiddlewares(middlewares []api.Handler) Option {
+	return func(options *Options) {
+		options.queryRegisteredServicesMiddlewares = middlewares
+	}
+}
+
 var serviceBaseUrlMap sync.Map
 
 func RegisterService(serviceShortName string, baseUrl string) {
@@ -36,6 +64,10 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 		opt(options)
 	}
 
+	executeSqlMiddlewares := append(options.globalMiddlewares, options.executeSqlMiddlewares...)
+	sqlExecuteLogMiddlewares := append(options.globalMiddlewares, options.sqlExecuteLogMiddlewares...)
+	queryRegisteredServicesMiddlewares := append(options.globalMiddlewares, options.queryRegisteredServicesMiddlewares...)
+
 	builder := gw.NewBuilder(api.RouterPrefix, "")
 
 	builder.
@@ -101,7 +133,7 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 
 					return jsonBody.Map(), nil
 				})), nil).
-		Build()
+		Build(executeSqlMiddlewares...)
 
 	builder.
 		Url(http.MethodGet, "/sql/execute/log").
@@ -145,7 +177,7 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 			gateway.GetRequestWithQueryParamsForm(
 				gateway.FormQueryParamsWithTenantIDAndUserIDFunc("", "executorId")),
 		), nil).
-		Build()
+		Build(sqlExecuteLogMiddlewares...)
 
 	// 查询注册的服务
 	builder.
@@ -160,5 +192,5 @@ func BuildGateway(gw *gateway.Gateway, opts ...Option) {
 			c.JSON(http.StatusOK, gin.H{
 				"services": serviceShortNames,
 			})
-		})
+		}, queryRegisteredServicesMiddlewares...)
 }

+ 5 - 5
framework/core/api/router.go

@@ -12,7 +12,7 @@ type Router interface {
 	AddMiddlewares(middlewares ...Handler) Router
 	RegisterVersionedRouter(version string, middlewares ...Handler) Router
 	VersionedRouter(version string) Router
-	AddRoute(method string, relativePath string, middlewares ...Handler) Router
+	AddRoute(method string, relativePath string, handlers ...Handler) Router
 	Static(relativePath string, root string)
 	StaticFile(relativePath string, filepath string)
 	BasePath() string
@@ -58,8 +58,8 @@ func (r *RootRouter) VersionedRouter(version string) Router {
 	return r.versioned[version]
 }
 
-func (r *RootRouter) AddRoute(method string, relativePath string, middlewares ...Handler) Router {
-	r.engine.Handle(method, relativePath, transferHandlers(middlewares...)...)
+func (r *RootRouter) AddRoute(method string, relativePath string, handlers ...Handler) Router {
+	r.engine.Handle(method, relativePath, transferHandlers(handlers...)...)
 	return r
 }
 
@@ -103,8 +103,8 @@ func (r *PrefixRouter) VersionedRouter(version string) Router {
 	return r.versioned[version]
 }
 
-func (r *PrefixRouter) AddRoute(method string, relativePath string, middlewares ...Handler) Router {
-	r.groupRouter.Handle(method, relativePath, transferHandlers(middlewares...)...)
+func (r *PrefixRouter) AddRoute(method string, relativePath string, handlers ...Handler) Router {
+	r.groupRouter.Handle(method, relativePath, transferHandlers(handlers...)...)
 	return r
 }