The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
guonaihong

gin 里面有解码客户端 gzip 数据的中间件吗?

  •  
  •   guonaihong ·
    guonaihong · Jun 22, 2020 · 1981 views
    This topic created in 2150 days ago, the information mentioned may be changed or developed.

    问题

    为了压缩流量,打算对 http.Client 发出的数据包进行压缩,客户端经过 gzip 压缩的 http 请求发给 gin,想知道 gin 里面有解码 gzip 的中间件(解码就是把 gizp 数据包还原成普通包)? 现有的中间件都是对 response 进行编码操作。没有的话,就自己鲁个。

    5 replies    2020-06-22 16:32:43 +08:00
    useben
        1
    useben  
       Jun 22, 2020
    ```go
    package main

    import (
    "fmt"
    "net/http"
    "time"

    "github.com/gin-contrib/gzip"
    "github.com/gin-gonic/gin"
    )

    func main() {
    r := gin.Default()
    r.Use(gzip.Gzip(gzip.DefaultCompression))
    r.GET("/ping", func(c *gin.Context) {
    c.String( http.StatusOK, "pong "+fmt.Sprint(time.Now().Unix()))
    })

    // Listen and Server in 0.0.0.0:8080
    r.Run(":8080")
    }
    ```

    官方提供 middleware
    guonaihong
        2
    guonaihong  
    OP
       Jun 22, 2020
    @useben 感谢,我看过这个中间件的源代码,他是对响应结果进行压缩的,他是把普通包变为 gzip 。我要的是解码,把 gzip 包,变为普通包。
    guonaihong
        4
    guonaihong  
    OP
       Jun 22, 2020
    @kappa 感谢。看测试代码是可以。
    guonaihong
        5
    guonaihong  
    OP
       Jun 22, 2020
    @useben 感谢,原来实现在另外一个文件里面。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3200 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 14:29 · PVG 22:29 · LAX 07:29 · JFK 10:29
    ♥ Do have faith in what you're doing.