yjp 1 rok pred
rodič
commit
81585bc5e5

+ 11 - 3
framework/binding/bind_item.go

@@ -12,7 +12,7 @@ import (
 	"strings"
 )
 
-func Bind[O any](binder *Binder, item *BindItem[O], middlewares ...api.Handler) {
+func Bind[O any](binder *Binder, item *BindItem[O], middlewares ...Middleware) {
 	item.bind(binder, middlewares...)
 }
 
@@ -22,7 +22,7 @@ type BindItem[O any] struct {
 	*SimpleBindItem[O]
 }
 
-func (item *BindItem[O]) bind(binder *Binder, middlewares ...api.Handler) {
+func (item *BindItem[O]) bind(binder *Binder, middlewares ...Middleware) {
 	if strutils.IsStringEmpty(item.Path) {
 		panic("需要指定路径")
 	}
@@ -145,7 +145,15 @@ func (item *BindItem[O]) bind(binder *Binder, middlewares ...api.Handler) {
 		},
 	}
 
-	handlers = append(handlers, middlewares...)
+	apiMiddlewares := make([]api.Handler, len(middlewares))
+	for i, middleware := range middlewares {
+		innerMiddleware := middleware
+		apiMiddlewares[i] = func(c *api.Context) {
+			innerMiddleware(c, binder.i)
+		}
+	}
+
+	handlers = append(handlers, apiMiddlewares...)
 
 	// 所有的函数加入到执行链中
 	binder.router.AddRoute(item.Method, item.Path, handlers...)

+ 0 - 4
framework/binding/binder.go

@@ -16,7 +16,3 @@ func NewBinder(router api.Router, i *infrastructure.Infrastructure) *Binder {
 		i:      i,
 	}
 }
-
-func (binder *Binder) GetInfrastructure() *infrastructure.Infrastructure {
-	return binder.i
-}

+ 8 - 0
framework/binding/middleware.go

@@ -0,0 +1,8 @@
+package binding
+
+import (
+	"git.sxidc.com/go-framework/baize/framework/core/api"
+	"git.sxidc.com/go-framework/baize/framework/core/infrastructure"
+)
+
+type Middleware func(c *api.Context, i *infrastructure.Infrastructure)

+ 5 - 5
framework/binding/simple_bind_item.go

@@ -9,19 +9,19 @@ import (
 	"net/http"
 )
 
-func PostBind[O any](binder *Binder, item *SimpleBindItem[O], middlewares ...api.Handler) {
+func PostBind[O any](binder *Binder, item *SimpleBindItem[O], middlewares ...Middleware) {
 	item.bind(binder, http.MethodPost, middlewares...)
 }
 
-func DeleteBind[O any](binder *Binder, item *SimpleBindItem[O], middlewares ...api.Handler) {
+func DeleteBind[O any](binder *Binder, item *SimpleBindItem[O], middlewares ...Middleware) {
 	item.bind(binder, http.MethodDelete, middlewares...)
 }
 
-func PutBind[O any](binder *Binder, item *SimpleBindItem[O], middlewares ...api.Handler) {
+func PutBind[O any](binder *Binder, item *SimpleBindItem[O], middlewares ...Middleware) {
 	item.bind(binder, http.MethodPut, middlewares...)
 }
 
-func GetBind[O any](binder *Binder, item *SimpleBindItem[O], middlewares ...api.Handler) {
+func GetBind[O any](binder *Binder, item *SimpleBindItem[O], middlewares ...Middleware) {
 	item.bind(binder, http.MethodGet, middlewares...)
 }
 
@@ -62,7 +62,7 @@ type SimpleBindItem[O any] struct {
 	ServiceFunc ServiceFunc[O]
 }
 
-func (item *SimpleBindItem[O]) bind(binder *Binder, method string, middlewares ...api.Handler) {
+func (item *SimpleBindItem[O]) bind(binder *Binder, method string, middlewares ...Middleware) {
 	bindingItem := &BindItem[O]{
 		Method:         method,
 		SimpleBindItem: item,