完成mapping解析
This commit is contained in:
parent
7b7aee4070
commit
a3caefef3f
52
reflect.go
52
reflect.go
@ -144,6 +144,58 @@ func (rt *ReflectType) fillMappingRule(field *StructField, inputMappingVal strin
|
||||
item = strings.TrimSpace(item)
|
||||
// 要赋值的字段名
|
||||
itemArr := strings.Split(item, ":")
|
||||
if len(itemArr) != 2 {
|
||||
// 配置格式错误, 跳过
|
||||
continue
|
||||
}
|
||||
rule.TargetField = strings.TrimSpace(itemArr[0])
|
||||
mapRuleArr := strings.Split(strings.TrimSpace(itemArr[1]), "|")
|
||||
for _, itemMapRule := range mapRuleArr {
|
||||
itemMapRule = strings.TrimLeft(itemMapRule, "#")
|
||||
itemMapRuleArr := strings.Split(itemMapRule, "#")
|
||||
// 注意 : # 为特殊分隔符, 如配置成 mapping:"project_id:#source_project_id#xxx_project_id" 实际等价于 mapping:"project_id:#source_project_id" 多余配置自动跳过
|
||||
if len(itemMapRuleArr[0]) < 2 {
|
||||
// 没有指定位置,默认all, 即配置格式: mapping:"project_id:#source_project_id"
|
||||
itemMapRuleArr[0] = MappingLocationAll
|
||||
itemMapRuleArr = []string{MappingLocationAll, itemMapRuleArr[0]}
|
||||
}
|
||||
|
||||
switch itemMapRuleArr[0] {
|
||||
// 从header读取
|
||||
case MappingLocationHeader:
|
||||
rule.RuleList = append(rule.RuleList, MappingRuleItem{
|
||||
Location: MappingLocationHeader,
|
||||
Field: itemMapRuleArr[1],
|
||||
})
|
||||
// 从请求参数读取
|
||||
case MappingLocationParam:
|
||||
rule.RuleList = append(rule.RuleList, MappingRuleItem{
|
||||
Location: MappingLocationParam,
|
||||
Field: itemMapRuleArr[1],
|
||||
})
|
||||
// 从响应数据读取
|
||||
case MappingLocationResponse:
|
||||
rule.RuleList = append(rule.RuleList, MappingRuleItem{
|
||||
Location: MappingLocationResponse,
|
||||
Field: itemMapRuleArr[1],
|
||||
})
|
||||
// 从扩展数据读取
|
||||
case MappingLocationExtension:
|
||||
rule.RuleList = append(rule.RuleList, MappingRuleItem{
|
||||
Location: MappingLocationExtension,
|
||||
Field: itemMapRuleArr[1],
|
||||
})
|
||||
// 全部读取一遍
|
||||
case MappingLocationAll:
|
||||
fallthrough
|
||||
default:
|
||||
for _, itemLocation := range mappingLocationList {
|
||||
rule.RuleList = append(rule.RuleList, MappingRuleItem{
|
||||
Location: itemLocation,
|
||||
Field: itemMapRuleArr[1],
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user