From 6e2306a5f271350082426264d76fb4f8a45adf4e Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Fri, 12 Dec 2025 08:52:52 +0800 Subject: [PATCH] refactor(handlers): improve request logging and payload handling --- sdk/api/handlers/handlers.go | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/sdk/api/handlers/handlers.go b/sdk/api/handlers/handlers.go index 5bfdf314..8893e5d6 100644 --- a/sdk/api/handlers/handlers.go +++ b/sdk/api/handlers/handlers.go @@ -116,19 +116,29 @@ func (h *BaseAPIHandler) GetContextWithCancel(handler interfaces.APIHandler, c * newCtx = context.WithValue(newCtx, "gin", c) newCtx = context.WithValue(newCtx, "handler", handler) return newCtx, func(params ...interface{}) { - if h.Cfg.RequestLog { - if len(params) == 1 { - data := params[0] - switch data.(type) { - case []byte: - appendAPIResponse(c, data.([]byte)) - case error: - appendAPIResponse(c, []byte(data.(error).Error())) - case string: - appendAPIResponse(c, []byte(data.(string))) - case bool: - case nil: + if h.Cfg.RequestLog && len(params) == 1 { + var payload []byte + switch data := params[0].(type) { + case []byte: + payload = data + case error: + if data != nil { + payload = []byte(data.Error()) } + case string: + payload = []byte(data) + } + if len(payload) > 0 { + if existing, exists := c.Get("API_RESPONSE"); exists { + if existingBytes, ok := existing.([]byte); ok && len(existingBytes) > 0 { + trimmedPayload := bytes.TrimSpace(payload) + if len(trimmedPayload) > 0 && bytes.Contains(existingBytes, trimmedPayload) { + cancel() + return + } + } + } + appendAPIResponse(c, payload) } }