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