From 7ebc610c2e381d404ff5a8d7ddcbab39c48f54c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Mon, 31 Mar 2025 21:47:47 +0800 Subject: [PATCH] =?UTF-8?q?mesh=E8=81=9A=E5=90=88=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E=E5=80=BC=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E4=B8=8E=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- httpclient/mesh/mesh.go | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/httpclient/mesh/mesh.go b/httpclient/mesh/mesh.go index cb6562f..c54520c 100644 --- a/httpclient/mesh/mesh.go +++ b/httpclient/mesh/mesh.go @@ -10,13 +10,14 @@ package mesh import ( "context" "fmt" + "strings" + "sync" + "git.zhangdeman.cn/gateway/validate" "git.zhangdeman.cn/zhangdeman/consts" "git.zhangdeman.cn/zhangdeman/network/httpclient" "git.zhangdeman.cn/zhangdeman/network/httpclient/define" "git.zhangdeman.cn/zhangdeman/serialize" - "strings" - "sync" ) func Request(req *RequestConfig, receiver any) *Response { @@ -79,6 +80,37 @@ func (c *client) Request() *Response { return c.resp } // 请求成功, 构建返回结果 + respByte := serialize.JSON.MarshalForByteIgnoreError(c.resp.AliasResultTable) + fieldList := make([]validate.StructField, 0) + for _, item := range c.reqCfg.ResultRule { + fieldList = append(fieldList, validate.StructField{ + JsonTag: "", + Type: item.DataType, + Required: false, + RuleList: nil, + DefaultValue: "", + SourcePath: fmt.Sprintf("%v.%v.%v", item.RequestAlias, item.RequestResultLocation.String(), item.RequestResultPath), + TargetPath: fmt.Sprintf("%v.%v", item.Location, item.DataPath), + Errmsg: "", + }) + } + resByte, err := validate.Run(respByte, fieldList) + if nil != err { + c.resp.ErrorCode = "-500" + c.resp.ErrorMessage = err.Error() + return c.resp + } + c.resp.Raw = respByte // 原始返回数据 + serialize.JSON.UnmarshalWithNumberIgnoreError(resByte, &c.resp.DataMap) // map结果 + + if nil != c.receiver { + // 解析到receiver + if err = serialize.JSON.UnmarshalWithNumber(resByte, c.receiver); nil != err { + c.resp.ErrorCode = "-500" + c.resp.ErrorMessage = err.Error() + return c.resp + } + } return c.resp }