feat: 优化参数解析
This commit is contained in:
		| @ -12,6 +12,7 @@ import ( | ||||
| 	"reflect" | ||||
| 	"sync" | ||||
|  | ||||
| 	"git.zhangdeman.cn/zhangdeman/consts" | ||||
| 	"git.zhangdeman.cn/zhangdeman/exception" | ||||
| 	"git.zhangdeman.cn/zhangdeman/gin/define" | ||||
| 	"git.zhangdeman.cn/zhangdeman/gin/request" | ||||
| @ -19,33 +20,42 @@ import ( | ||||
| 	"github.com/gin-gonic/gin" | ||||
| ) | ||||
|  | ||||
| func getFormInitValue(ctx *gin.Context, uriCfg UriConfig) (any, error) { | ||||
| 	var ( | ||||
| 		formParam reflect.Value | ||||
| 		formValue any | ||||
| 		err       error | ||||
| 	) | ||||
|  | ||||
| 	if uriCfg.FormDataType.Kind() == reflect.Ptr { | ||||
| 		formParam = reflect.New(uriCfg.FormDataType.Elem()) | ||||
| 	} else { | ||||
| 		// 表单解析 | ||||
| 		formParam = reflect.New(uriCfg.FormDataType) | ||||
| 	} | ||||
| 	formValue = formParam.Interface() | ||||
| 	if err = request.Form.Parse(ctx, formValue); nil != err { | ||||
| 		// 格式化验证错误的信息 | ||||
| 		err = GetValidateErr(formValue, err) | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return formValue, nil | ||||
| } | ||||
|  | ||||
| // RequestHandler 获取请求处理方法 | ||||
| // | ||||
| // Author : go_developer@163.com<白茶清欢> | ||||
| // | ||||
| // Date : 19:44 2025/1/27 | ||||
| func RequestHandler(uriCfg UriConfig) gin.HandlerFunc { | ||||
| 	return func(ctx *gin.Context) { | ||||
| 		var ( | ||||
| 			err error | ||||
| 			ok  bool | ||||
| 			e   exception.IException | ||||
| 			err       error | ||||
| 			ok        bool | ||||
| 			e         exception.IException | ||||
| 			formValue any | ||||
| 		) | ||||
|  | ||||
| 		var formParam reflect.Value | ||||
| 		if uriCfg.FormDataType.Kind() == reflect.Ptr { | ||||
| 			formParam = reflect.New(uriCfg.FormDataType.Elem()) | ||||
| 		} else { | ||||
| 			// 表单解析 | ||||
| 			formParam = reflect.New(uriCfg.FormDataType) | ||||
| 		} | ||||
| 		formValue := formParam.Interface() | ||||
| 		if err = request.Form.Parse(ctx, formValue); nil != err { | ||||
| 			// 格式化验证错误的信息 | ||||
| 			err = GetValidateErr(formValue, err) | ||||
| 		if formValue, err = getFormInitValue(ctx, uriCfg); nil != err { | ||||
| 			e = exception.NewFromError(400, err) | ||||
| 			response.SendWithException(ctx, e, &define.ResponseOption{ | ||||
| 				ContentType: "application/json;charset=utf-8", | ||||
| 				ContentType: consts.MimeTypeJson, | ||||
| 			}) | ||||
| 			ctx.Abort() | ||||
| 			return | ||||
|  | ||||
		Reference in New Issue
	
	Block a user