From 25aab2e8dbe12966266b88e2a3d3058e9617ab90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E8=8C=B6=E6=B8=85=E6=AC=A2?= Date: Wed, 15 Feb 2023 14:52:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0ctx.JSON=E7=9A=84=E5=B9=B3?= =?UTF-8?q?=E6=9B=BF=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- response/response.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/response/response.go b/response/response.go index e4b82ab..e9efce9 100644 --- a/response/response.go +++ b/response/response.go @@ -17,6 +17,11 @@ import ( "github.com/gin-gonic/gin" ) +const ( + // hasSendResponseFlag 已经发送响应数据的标识, 一旦识别到, 重复调用不会执行 + hasSendResponseFlag = "GIN_PKG_HAS_SEND_RESPONSE" +) + // Success 成功的响应 // // Author : go_developer@163.com<白茶清欢> @@ -33,6 +38,12 @@ func Success(ctx *gin.Context, data interface{}) { // // Date : 22:40 2022/6/25 func Send(ctx *gin.Context, code interface{}, httpCode int, data interface{}) { + if ctx.GetBool(hasSendResponseFlag) { + // 已经发送过数据, 后面在发送数据, 不执行 + return + } + // 设置数据已发送的标识 + defer ctx.Set(hasSendResponseFlag, true) finishRequestTime := time.Now().UnixNano() responseData := map[string]interface{}{ define.ResponseCodeField: code, @@ -75,3 +86,18 @@ func SendWithException(ctx *gin.Context, e exception.IException, data interface{ Send(ctx, e.GetCode(), e.GetHttpCode(), data) } } + +// JSON ctx.JSON 的平替, 增加了数据是否已相应的标识 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 14:51 2023/2/15 +func JSON(ctx *gin.Context, httpCode int, data interface{}) { + if ctx.GetBool(hasSendResponseFlag) { + // 已经发送过数据, 后面在发送数据, 不执行 + return + } + // 设置数据已发送的标识 + defer ctx.Set(hasSendResponseFlag, true) + ctx.JSON(httpCode, data) +}