修复参数构建 + 验证相关一系列BUG
This commit is contained in:
@ -22,7 +22,7 @@ import (
|
||||
// Date : 14:14 2025/3/28
|
||||
type RequestConfig struct {
|
||||
Ctx context.Context `json:"-"` // 上下文
|
||||
CommonParam map[string]any `json:"common_param"` // 公共参数
|
||||
CommonParam map[string]map[string]any `json:"common_param"` // 公共参数
|
||||
Group [][]*RequestConfigGroupItem `json:"group"` // 请求分组
|
||||
ResultRule []*RequestConfigResultRule `json:"result_rule"` // 结果提取规则, 多个接口的结果构造成一个返回结果
|
||||
}
|
||||
|
@ -36,6 +36,28 @@ func Request(req *RequestConfig, receiver any) *Response {
|
||||
reqCfg: req,
|
||||
receiver: receiver,
|
||||
}
|
||||
c.resp.AliasResultTable[CommonServiceAlias] = &define.Response{
|
||||
Query: c.reqCfg.CommonParam[consts.RequestDataLocationQuery.String()],
|
||||
Header: c.reqCfg.CommonParam[consts.RequestDataLocationHeader.String()],
|
||||
Cookie: c.reqCfg.CommonParam[consts.RequestDataLocationCookie.String()],
|
||||
Data: "",
|
||||
Code: "",
|
||||
Message: "",
|
||||
Body: c.reqCfg.CommonParam[consts.RequestDataLocationBody.String()],
|
||||
ExtendData: nil,
|
||||
HttpCode: 0,
|
||||
HttpCodeStatus: "",
|
||||
ResponseDataRule: nil,
|
||||
Seq: 0,
|
||||
RequestStartTime: 0,
|
||||
RequestFinishTime: 0,
|
||||
UsedTime: 0,
|
||||
RestyResponse: nil,
|
||||
IsSuccess: false,
|
||||
RequestCount: 0,
|
||||
FailInfo: nil,
|
||||
CacheInfo: nil,
|
||||
}
|
||||
return c.Request()
|
||||
}
|
||||
|
||||
@ -152,9 +174,10 @@ func (c *client) buildRequestParams(apiCfg *RequestConfigGroupItem) (map[string]
|
||||
sourceData := map[string]any{}
|
||||
for aliasName, itemRes := range c.resp.AliasResultTable {
|
||||
sourceData[aliasName] = map[string]any{
|
||||
consts.ResponseDataLocationBody.String(): itemRes.Body[apiCfg.RequestCfg.DataField],
|
||||
consts.ResponseDataLocationHeader.String(): itemRes.Header,
|
||||
consts.ResponseDataLocationCookie.String(): itemRes.Cookie,
|
||||
strings.ToLower(consts.ResponseDataLocationBody.String()): itemRes.Body[apiCfg.RequestCfg.DataField],
|
||||
strings.ToLower(consts.ResponseDataLocationHeader.String()): itemRes.Header,
|
||||
strings.ToLower(consts.ResponseDataLocationCookie.String()): itemRes.Cookie,
|
||||
strings.ToLower(consts.RequestDataLocationQuery.String()): itemRes.Query,
|
||||
}
|
||||
}
|
||||
sourceDataByte := serialize.JSON.MarshalForByteIgnoreError(sourceData)
|
||||
@ -162,7 +185,8 @@ func (c *client) buildRequestParams(apiCfg *RequestConfigGroupItem) (map[string]
|
||||
for _, itemParam := range apiCfg.ParamRuleList {
|
||||
arr := strings.Split(itemParam.Path, ".")
|
||||
sourcePath := itemParam.SourceResultPath
|
||||
sourcePath = fmt.Sprintf("%v.%v.%v", itemParam.SourceAlias, itemParam.SourceResultLocation, itemParam.SourceResultPath)
|
||||
sourcePath = fmt.Sprintf("%v.%v.%v", itemParam.SourceAlias, strings.ToLower(itemParam.SourceResultLocation), itemParam.SourceResultPath)
|
||||
targetPath := fmt.Sprintf("%v.%v", strings.ToLower(itemParam.Location.String()), itemParam.Path)
|
||||
validateRuleList = append(validateRuleList, validate.StructField{
|
||||
JsonTag: arr[len(arr)-1],
|
||||
Type: itemParam.Type,
|
||||
@ -170,10 +194,11 @@ func (c *client) buildRequestParams(apiCfg *RequestConfigGroupItem) (map[string]
|
||||
RuleList: nil,
|
||||
DefaultValue: itemParam.DefaultValue,
|
||||
SourcePath: sourcePath,
|
||||
TargetPath: fmt.Sprintf("%v.%v", itemParam.Location, itemParam.Path),
|
||||
TargetPath: targetPath,
|
||||
Errmsg: "",
|
||||
})
|
||||
}
|
||||
|
||||
buildRes, err := validate.Run(sourceDataByte, validateRuleList)
|
||||
if nil != err {
|
||||
return nil, err
|
||||
|
Reference in New Issue
Block a user