feat: 优化参数解析

This commit is contained in:
2025-10-30 15:37:16 +08:00
parent 64a3652137
commit 1a9bc7b6dd
3 changed files with 51 additions and 35 deletions

View File

@ -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