Ver Fonte

完善代码

yjp há 1 ano atrás
pai
commit
6ab3c692a3
1 ficheiros alterados com 14 adições e 5 exclusões
  1. 14 5
      binding/bind_item.go

+ 14 - 5
binding/bind_item.go

@@ -46,6 +46,12 @@ func (item *BindItem[O]) bind(binder *Binder, middlewares ...api.Handler) {
 			// 有请求数据
 			if item.RequestParams != nil {
 				requestParamsType := reflect.TypeOf(item.RequestParams)
+				if !reflectutils.IsTypeStructOrStructPointer(requestParamsType) {
+					var outputZero O
+					item.ResponseFunc(c, http.StatusOK, outputZero, fserr.New("请求参数不是结构或结构指针"))
+					return
+				}
+
 				if requestParamsType.Kind() == reflect.Pointer {
 					params = reflect.New(requestParamsType.Elem()).Interface().(request.Params)
 				} else {
@@ -115,11 +121,14 @@ func (item *BindItem[O]) bind(binder *Binder, middlewares ...api.Handler) {
 						}
 
 						obj := reflect.New(reflectutils.PointerTypeElem(objectType)).Interface()
-						err := request.AssignRequestParamsToDomainObject(params, obj)
-						if err != nil {
-							var outputZero O
-							item.ResponseFunc(c, http.StatusOK, outputZero, err)
-							return
+
+						if params != nil {
+							err := request.AssignRequestParamsToDomainObject(params, obj)
+							if err != nil {
+								var outputZero O
+								item.ResponseFunc(c, http.StatusOK, outputZero, err)
+								return
+							}
 						}
 
 						domainObjects = append(domainObjects, obj)