Browse Source

开始优化

yjp 1 year ago
parent
commit
b6c8b4a0b8

+ 10 - 10
convenient/gwtools/crud.go

@@ -133,7 +133,7 @@ type CRUDCreateOptions struct {
 	disable bool
 
 	// 创建回调
-	callback gateway.RequestCallbackFunc
+	callback gateway.RequestCallback
 
 	// 创建中间件
 	middlewares []api.Handler
@@ -150,7 +150,7 @@ type CRUDDeleteOptions struct {
 	disable bool
 
 	// 删除回调
-	callback gateway.RequestCallbackFunc
+	callback gateway.RequestCallback
 
 	// 删除中间件
 	middlewares []api.Handler
@@ -161,7 +161,7 @@ type CRUDUpdateOptions struct {
 	disable bool
 
 	// 更新回调
-	callback gateway.RequestCallbackFunc
+	callback gateway.RequestCallback
 
 	// 更新中间件
 	middlewares []api.Handler
@@ -175,7 +175,7 @@ type CRUDQueryOptions struct {
 	disable bool
 
 	// 查询回调
-	callback gateway.RequestCallbackFunc
+	callback gateway.RequestCallback
 
 	// 查询中间件
 	middlewares []api.Handler
@@ -189,13 +189,13 @@ type CRUDGetByIDOptions struct {
 	disable bool
 
 	// 根据ID查询回调
-	callback gateway.RequestCallbackFunc
+	callback gateway.RequestCallback
 
 	// 根据ID查询中间件
 	middlewares []api.Handler
 }
 
-func WithCRUDCreateCallbacks(callbacks gateway.RequestCallbackFunc) CRUDCreateOption {
+func WithCRUDCreateCallbacks(callbacks gateway.RequestCallback) CRUDCreateOption {
 	return func(options *CRUDCreateOptions) {
 		options.callback = callbacks
 	}
@@ -225,7 +225,7 @@ func WithCRUDDisableDelete() CRUDDeleteOption {
 	}
 }
 
-func WithCRUDDeleteCallbacks(callbacks gateway.RequestCallbackFunc) CRUDDeleteOption {
+func WithCRUDDeleteCallbacks(callbacks gateway.RequestCallback) CRUDDeleteOption {
 	return func(options *CRUDDeleteOptions) {
 		options.callback = callbacks
 	}
@@ -243,7 +243,7 @@ func WithCRUDDisableUpdate() CRUDUpdateOption {
 	}
 }
 
-func WithCRUDUpdateCallbacks(callbacks gateway.RequestCallbackFunc) CRUDUpdateOption {
+func WithCRUDUpdateCallbacks(callbacks gateway.RequestCallback) CRUDUpdateOption {
 	return func(options *CRUDUpdateOptions) {
 		options.callback = callbacks
 	}
@@ -267,7 +267,7 @@ func WithCRUDDisableQuery() CRUDQueryOption {
 	}
 }
 
-func WithCRUDQueryCallbacks(callbacks gateway.RequestCallbackFunc) CRUDQueryOption {
+func WithCRUDQueryCallbacks(callbacks gateway.RequestCallback) CRUDQueryOption {
 	return func(options *CRUDQueryOptions) {
 		options.callback = callbacks
 	}
@@ -291,7 +291,7 @@ func WithCRUDDisableGetByID() CRUDGetByIDOption {
 	}
 }
 
-func WithCRUDGetByIDCallbacks(callbacks gateway.RequestCallbackFunc) CRUDGetByIDOption {
+func WithCRUDGetByIDCallbacks(callbacks gateway.RequestCallback) CRUDGetByIDOption {
 	return func(options *CRUDGetByIDOptions) {
 		options.callback = callbacks
 	}

+ 1 - 1
convenient/gwtools/pass_through.go

@@ -68,7 +68,7 @@ func CommonPassThrough(builder *gateway.Builder, params *CommonPassThroughParams
 
 type PassThroughRequestItem struct {
 	Request  gateway.BuilderRequest
-	Callback gateway.RequestCallbackFunc
+	Callback gateway.RequestCallback
 }
 
 type SimplePassThroughParams struct {

+ 32 - 21
framework/gateway/builder.go

@@ -6,10 +6,11 @@ import (
 	"time"
 )
 
-type RequestCallbackFunc func(c *api.Context, response *http_client.Response, resultMap map[string]any) error
-type GlobalRequestCallbackFunc func(c *api.Context, request BuilderRequest, historyRequests []BuilderRequest, resultMap map[string]any) error
-type ResponseSuccessFunc func(c *api.Context, historyRequests []BuilderRequest, resultMap map[string]any)
-type ResponseErrorFunc func(c *api.Context, err error)
+type RequestParamsBindCallback func(c *api.Context)
+type RequestCallback func(c *api.Context, response *http_client.Response, resultMap map[string]any) error
+type GlobalRequestCallback func(c *api.Context, request BuilderRequest, historyRequests []BuilderRequest, resultMap map[string]any) error
+type ResponseSuccessCallback func(c *api.Context, historyRequests []BuilderRequest, resultMap map[string]any)
+type ResponseErrorCallback func(c *api.Context, err error)
 
 type Builder struct {
 	router         api.Router
@@ -35,41 +36,47 @@ func (builder *Builder) Url(httpMethod string, relativePath string) *Builder {
 	return copyBuilder
 }
 
-func (builder *Builder) Post(request *PostRequest, requestCallbackFunc RequestCallbackFunc) *Builder {
+func (builder *Builder) Post(request *PostRequest, requestCallbackFunc RequestCallback) *Builder {
 	return builder.addRequest(newBuilderRequestItem(request, requestCallbackFunc))
 }
 
-func (builder *Builder) PostStruct(request *PostRequest, requestCallbackFunc RequestCallbackFunc) *Builder {
+func (builder *Builder) PostStruct(request *PostRequest, requestCallbackFunc RequestCallback) *Builder {
 	return builder.addRequest(newBuilderRequestItem(request, requestCallbackFunc))
 }
 
-func (builder *Builder) Delete(request *DeleteRequest, requestCallbackFunc RequestCallbackFunc) *Builder {
+func (builder *Builder) Delete(request *DeleteRequest, requestCallbackFunc RequestCallback) *Builder {
 	return builder.addRequest(newBuilderRequestItem(request, requestCallbackFunc))
 }
 
-func (builder *Builder) Put(request *PutRequest, requestCallbackFunc RequestCallbackFunc) *Builder {
+func (builder *Builder) Put(request *PutRequest, requestCallbackFunc RequestCallback) *Builder {
 	return builder.addRequest(newBuilderRequestItem(request, requestCallbackFunc))
 }
 
-func (builder *Builder) Get(request *GetRequest, requestCallbackFunc RequestCallbackFunc) *Builder {
+func (builder *Builder) Get(request *GetRequest, requestCallbackFunc RequestCallback) *Builder {
 	return builder.addRequest(newBuilderRequestItem(request, requestCallbackFunc))
 }
 
-func (builder *Builder) GlobalRequestCallbackFunc(globalRequestCallbackFunc GlobalRequestCallbackFunc) *Builder {
+func (builder *Builder) GlobalRequestParamsBindCallback(requestParamsBindCallback RequestParamsBindCallback) *Builder {
 	copyBuilder := builder.copy()
-	copyBuilder.params.globalRequestCallbackFunc = globalRequestCallbackFunc
+	copyBuilder.params.requestParamsBindCallback = requestParamsBindCallback
 	return copyBuilder
 }
 
-func (builder *Builder) ResponseSuccessFunc(responseSuccessFunc ResponseSuccessFunc) *Builder {
+func (builder *Builder) GlobalRequestCallback(globalRequestCallback GlobalRequestCallback) *Builder {
 	copyBuilder := builder.copy()
-	copyBuilder.params.responseSuccessFunc = responseSuccessFunc
+	copyBuilder.params.globalRequestCallback = globalRequestCallback
 	return copyBuilder
 }
 
-func (builder *Builder) ResponseErrorFunc(responseErrorFunc ResponseErrorFunc) *Builder {
+func (builder *Builder) ResponseSuccessCallback(responseSuccessCallback ResponseSuccessCallback) *Builder {
 	copyBuilder := builder.copy()
-	copyBuilder.params.responseErrorFunc = responseErrorFunc
+	copyBuilder.params.responseSuccessCallback = responseSuccessCallback
+	return copyBuilder
+}
+
+func (builder *Builder) ResponseErrorCallback(responseErrorCallback ResponseErrorCallback) *Builder {
+	copyBuilder := builder.copy()
+	copyBuilder.params.responseErrorCallback = responseErrorCallback
 	return copyBuilder
 }
 
@@ -77,6 +84,10 @@ func (builder *Builder) Build(middlewares ...api.Handler) {
 	copyBuilder := builder.copy()
 	copyBuilder.router.AddRoute(builder.params.httpMethod, builder.params.relativePath, append(middlewares,
 		func(c *api.Context) {
+			if builder.params.requestParamsBindCallback != nil {
+				builder.params.requestParamsBindCallback(c)
+			}
+
 			httpRequest := builder.httpClient.NewRequest(http_client.WithNewRequestTimeout(time.Duration(builder.httpTimeoutSec) * time.Second))
 			historyRequests := make([]BuilderRequest, 0)
 			resultMap := make(map[string]any)
@@ -84,24 +95,24 @@ func (builder *Builder) Build(middlewares ...api.Handler) {
 			for _, requestItem := range builder.params.requestItems {
 				err := requestItem.request.Request(c, httpRequest, historyRequests, resultMap)
 				if err != nil {
-					builder.params.responseErrorFunc(c, err)
+					builder.params.responseErrorCallback(c, err)
 					return
 				}
 
 				if requestItem.requestCallbackFunc != nil {
 					err := requestItem.requestCallbackFunc(c, requestItem.request.Response(), resultMap)
 					if err != nil {
-						builder.params.responseErrorFunc(c, err)
+						builder.params.responseErrorCallback(c, err)
 						return
 					}
 
 					continue
 				}
 
-				if builder.params.globalRequestCallbackFunc != nil {
-					err := builder.params.globalRequestCallbackFunc(c, requestItem.request, historyRequests, resultMap)
+				if builder.params.globalRequestCallback != nil {
+					err := builder.params.globalRequestCallback(c, requestItem.request, historyRequests, resultMap)
 					if err != nil {
-						builder.params.responseErrorFunc(c, err)
+						builder.params.responseErrorCallback(c, err)
 						return
 					}
 
@@ -111,7 +122,7 @@ func (builder *Builder) Build(middlewares ...api.Handler) {
 				historyRequests = append(historyRequests, requestItem.request)
 			}
 
-			builder.params.responseSuccessFunc(c, historyRequests, resultMap)
+			builder.params.responseSuccessCallback(c, historyRequests, resultMap)
 		})...)
 }
 

+ 16 - 15
framework/gateway/builder_params.go

@@ -11,18 +11,19 @@ type builderParams struct {
 	httpMethod                string
 	relativePath              string
 	requestItems              []*builderRequestItem
-	globalRequestCallbackFunc GlobalRequestCallbackFunc
-	responseSuccessFunc       ResponseSuccessFunc
-	responseErrorFunc         ResponseErrorFunc
+	requestParamsBindCallback RequestParamsBindCallback
+	globalRequestCallback     GlobalRequestCallback
+	responseSuccessCallback   ResponseSuccessCallback
+	responseErrorCallback     ResponseErrorCallback
 }
 
 func newBuilderParams() *builderParams {
 	return &builderParams{
-		httpMethod:                "",
-		relativePath:              "",
-		requestItems:              make([]*builderRequestItem, 0),
-		globalRequestCallbackFunc: nil,
-		responseSuccessFunc: func(c *api.Context, historyRequests []BuilderRequest, customResultMap map[string]any) {
+		httpMethod:            "",
+		relativePath:          "",
+		requestItems:          make([]*builderRequestItem, 0),
+		globalRequestCallback: nil,
+		responseSuccessCallback: func(c *api.Context, historyRequests []BuilderRequest, customResultMap map[string]any) {
 			c.Status(http.StatusOK)
 
 			if historyRequests != nil && len(historyRequests) != 0 {
@@ -36,7 +37,7 @@ func newBuilderParams() *builderParams {
 
 			c.Writer.Flush()
 		},
-		responseErrorFunc: func(c *api.Context, err error) {
+		responseErrorCallback: func(c *api.Context, err error) {
 			if err == nil {
 				return
 			}
@@ -56,11 +57,11 @@ func newBuilderParams() *builderParams {
 
 func (params *builderParams) copy() *builderParams {
 	return &builderParams{
-		httpMethod:                params.httpMethod,
-		relativePath:              params.relativePath,
-		requestItems:              params.requestItems,
-		globalRequestCallbackFunc: params.globalRequestCallbackFunc,
-		responseSuccessFunc:       params.responseSuccessFunc,
-		responseErrorFunc:         params.responseErrorFunc,
+		httpMethod:              params.httpMethod,
+		relativePath:            params.relativePath,
+		requestItems:            params.requestItems,
+		globalRequestCallback:   params.globalRequestCallback,
+		responseSuccessCallback: params.responseSuccessCallback,
+		responseErrorCallback:   params.responseErrorCallback,
 	}
 }

+ 37 - 10
framework/gateway/builder_request.go

@@ -6,6 +6,7 @@ import (
 	"net/http"
 )
 
+type FormUrlFunc func(c *api.Context) (string, error)
 type FormHeadersFunc func(c *api.Context, historyRequests []BuilderRequest, customResultMap map[string]any) (map[string]string, error)
 type FormBodyFunc func(c *api.Context, historyRequests []BuilderRequest, customResultMap map[string]any) (any, error)
 type FormQueryParamsFunc func(c *api.Context, historyRequests []BuilderRequest, customResultMap map[string]any) (map[string]string, error)
@@ -35,9 +36,15 @@ type BuilderRequest interface {
 }
 
 type PostRequest struct {
+	// 静态配置
 	Url     string
-	Headers FormHeadersFunc
-	Body    FormBodyFunc
+	Headers map[string]string
+	Body    any
+
+	// 动态配置
+	DynamicUrl    FormUrlFunc
+	DynamicHeader FormHeadersFunc
+	DynamicBody   FormBodyFunc
 
 	response *http_client.Response
 }
@@ -85,10 +92,17 @@ func (req *PostRequest) Response() *http_client.Response {
 }
 
 type DeleteRequest struct {
+	// 静态配置
 	Url         string
-	Headers     FormHeadersFunc
-	PathParams  FormPathParamsFunc
-	QueryParams FormQueryParamsFunc
+	Headers     map[string]string
+	PathParams  map[string]string
+	QueryParams map[string]string
+
+	// 动态配置
+	DynamicUrl         FormUrlFunc
+	DynamicHeader      FormHeadersFunc
+	DynamicPathParams  FormPathParamsFunc
+	DynamicQueryParams FormQueryParamsFunc
 
 	response *http_client.Response
 }
@@ -147,9 +161,15 @@ func (req *DeleteRequest) Response() *http_client.Response {
 }
 
 type PutRequest struct {
+	// 静态配置
 	Url     string
-	Headers FormHeadersFunc
-	Body    FormBodyFunc
+	Headers map[string]string
+	Body    any
+
+	// 动态配置
+	DynamicUrl    FormUrlFunc
+	DynamicHeader FormHeadersFunc
+	DynamicBody   FormBodyFunc
 
 	response *http_client.Response
 }
@@ -197,10 +217,17 @@ func (req *PutRequest) Response() *http_client.Response {
 }
 
 type GetRequest struct {
+	// 静态配置
 	Url         string
-	Headers     FormHeadersFunc
-	PathParams  FormPathParamsFunc
-	QueryParams FormQueryParamsFunc
+	Headers     map[string]string
+	PathParams  map[string]string
+	QueryParams map[string]string
+
+	// 动态配置
+	DynamicUrl         FormUrlFunc
+	DynamicHeader      FormHeadersFunc
+	DynamicPathParams  FormPathParamsFunc
+	DynamicQueryParams FormQueryParamsFunc
 
 	response *http_client.Response
 }

+ 2 - 2
framework/gateway/builder_request_item.go

@@ -2,10 +2,10 @@ package gateway
 
 type builderRequestItem struct {
 	request             BuilderRequest
-	requestCallbackFunc RequestCallbackFunc
+	requestCallbackFunc RequestCallback
 }
 
-func newBuilderRequestItem(request BuilderRequest, callbackFunc RequestCallbackFunc) *builderRequestItem {
+func newBuilderRequestItem(request BuilderRequest, callbackFunc RequestCallback) *builderRequestItem {
 	return &builderRequestItem{
 		request:             request,
 		requestCallbackFunc: callbackFunc,