From 420fa27f5c05c98c94c856eaa443b839364e5e30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Tue, 1 Apr 2025 12:08:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=A2=9E=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- httpclient/client.go | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/httpclient/client.go b/httpclient/client.go index 513c512..9c29a74 100644 --- a/httpclient/client.go +++ b/httpclient/client.go @@ -85,6 +85,15 @@ func NewHttpClient(reqConfig *define.Request, cacheInstance cache.ICache) (*Http requestFinishHandler: make([]define.RequestFinishHandler, 0), cacheInstance: cacheInstance, } + hc.OnRequestFinish(func(req *define.Request, rep *define.Response) { + if rep.IsSuccess { + // 请求成功 + log.Record(req.Ctx, req.Logger, consts.LogLevelInfo, "接口请求成功", req, rep) + return + } + // 请求失败 + log.Record(req.Ctx, req.Logger, consts.LogLevelError, "接口请求失败", req, rep) + }) return hc, nil } @@ -248,6 +257,16 @@ func (hc *HttpClient) requestBackendApi() *define.Response { response := hc.newResponse() for i := 0; i < hc.reqConfig.RetryRule.RetryCount+1; i++ { + if response.Seq > 0 { + // 说明是重试, 记录上一次的请求信息 + response.RequestFinishTime = time.Now().UnixMilli() + response.UsedTime = response.RequestFinishTime - response.RequestStartTime + for _, itemAfterResponse := range hc.requestFinishHandler { + itemAfterResponse(hc.reqConfig, response) + } + } + response.RequestStartTime = time.Now().UnixMilli() // 每次重置请求时间 + response.RequestFinishTime = 0 // 清空完成时间 response.Seq++ response.RequestCount++ if response.RestyResponse, err = hc.request.Send(); nil != err { @@ -255,9 +274,6 @@ func (hc *HttpClient) requestBackendApi() *define.Response { Type: define.RequestFailTypeSend, Message: "response instance is nil", } - for _, itemAfterResponse := range hc.requestFinishHandler { - itemAfterResponse(hc.reqConfig, response) - } time.Sleep(time.Duration(hc.reqConfig.RetryRule.RetryTimeInterval) * time.Millisecond) continue } @@ -267,9 +283,6 @@ func (hc *HttpClient) requestBackendApi() *define.Response { Type: define.RequestFailTypeSend, Message: "response instance is nil", } - for _, itemAfterResponse := range hc.requestFinishHandler { - itemAfterResponse(hc.reqConfig, response) - } time.Sleep(time.Duration(hc.reqConfig.RetryRule.RetryTimeInterval) * time.Millisecond) continue } @@ -297,7 +310,12 @@ func (hc *HttpClient) requestBackendApi() *define.Response { response.CacheInfo.SetCache, response.CacheInfo.CacheError = hc.setCacheResult(response) // 设置缓存 break } - + response.RequestFinishTime = time.Now().UnixMilli() + response.UsedTime = response.RequestFinishTime - response.RequestStartTime + // 请求完成hook + for _, itemAfterResponse := range hc.requestFinishHandler { + itemAfterResponse(hc.reqConfig, response) + } return response }