From 1d9b568bef2f59fde6bd0153031a7808b9673a3f Mon Sep 17 00:00:00 2001 From: laoboli <1293528695@qq.com> Date: Wed, 19 Mar 2025 16:58:09 +0800 Subject: [PATCH] feat: gzip middleware. --- middleware/gzip.go | 22 ++++++++++++++++++++++ routes/routes.go | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 middleware/gzip.go diff --git a/middleware/gzip.go b/middleware/gzip.go new file mode 100644 index 0000000..97dcefc --- /dev/null +++ b/middleware/gzip.go @@ -0,0 +1,22 @@ +package middleware + +import ( + "compress/gzip" + "github.com/gin-gonic/gin" + "net/http" +) + +func GzipMiddleware() gin.HandlerFunc { + return func(c *gin.Context) { + if c.Request.Header.Get("Content-Encoding") == "gzip" { + gzReader, err := gzip.NewReader(c.Request.Body) + if err != nil { + c.AbortWithStatusJSON(http.StatusBadRequest, gin.H{"error": "Invalid gzip format"}) + return + } + defer gzReader.Close() + c.Request.Body = gzReader + } + c.Next() + } +} diff --git a/routes/routes.go b/routes/routes.go index 4c4d7cd..f732cd1 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -3,10 +3,12 @@ package routes import ( "github.com/gin-gonic/gin" "hr_receiver/controllers" + "hr_receiver/middleware" ) func SetupRouter() *gin.Engine { r := gin.Default() + r.Use(middleware.GzipMiddleware()) trainingController := controllers.NewTrainingController() v1 := r.Group("/api/v1")