From 42b9f26a9a5398b82fd78c6923e2fa788b086a93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Thu, 29 May 2025 23:11:56 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8D=E6=94=AF=E6=8C=81=E4=BB=8EHe?= =?UTF-8?q?ader=E6=88=96=E8=80=85Body=E8=A7=A3=E6=9E=90=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- httpclient/define/request.go | 1 + httpclient/implement/response.go | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/httpclient/define/request.go b/httpclient/define/request.go index 4fbdb3f..3361c15 100644 --- a/httpclient/define/request.go +++ b/httpclient/define/request.go @@ -30,6 +30,7 @@ type Request struct { Method string `json:"method"` // 请求方法 DataField string `json:"data_field"` // 数据字段 CodeField string `json:"code_field"` // 业务状态码字段 + CodeLocation string `json:"code_location"` // 业务状态码位置 MessageField string `json:"message_field"` // code描述字段 DataReceiver any `json:"-"` // 响应data部分数据解析 SuccessHttpCodeList []int `json:"success_http_code_list"` // 哪些http状态码视为成功, 不配置, 默认2xx diff --git a/httpclient/implement/response.go b/httpclient/implement/response.go index 1c8e26f..94e1b82 100644 --- a/httpclient/implement/response.go +++ b/httpclient/implement/response.go @@ -94,8 +94,20 @@ func (r *Response) fillResponseBody(reqCfg *define.Request, response *define.Res return errors.New("response body Marshal error :" + err.Error()) } response.Data = string(jsonByte) - response.Code = gjson.Get(response.Data, reqCfg.CodeField).String() - response.Message = gjson.Get(response.Data, reqCfg.MessageField).String() + if strings.ToLower(reqCfg.CodeLocation) == "header" { + if reqCfg.CodeField == "code" { + response.Code = fmt.Sprintf("%v", response.HttpCode) + response.Message = response.RestyResponse.Status() + } else { + response.Code = response.RestyResponse.Header().Get(reqCfg.CodeField) + response.Message = response.RestyResponse.Header().Get(reqCfg.MessageField) + } + } else { + // 统一认为Body + response.Code = gjson.Get(response.Data, reqCfg.CodeField).String() + response.Message = gjson.Get(response.Data, reqCfg.MessageField).String() + } + businessData := gjson.Get(response.Data, reqCfg.DataField) if businessData.Value() == nil { // data为空指针, 归一化成空对象