跳转到内容

解压缩

当 Content-Encoding header 设置为 gzip 时,Decompress 中间件会解压 HTTP 请求体。

所有核心中间件都位于 middleware 包中:

import "github.com/labstack/echo/v5/middleware"
e.Use(middleware.Decompress())
e := echo.New()
e.Use(middleware.DecompressWithConfig(middleware.DecompressConfig{
Skipper: middleware.DefaultSkipper,
}))

DecompressConfig · github.com/labstack/echo/v5@5196b9b

字段说明由英文源码注释生成。

包源码中的字段
字段类型说明源码
SkipperSkipperSkipper defines a function to skip middleware.L19
GzipDecompressPoolDecompressorGzipDecompressPool defines an interface to provide the sync.Pool used to create/store Gzip readersL22
MaxDecompressedSizeint64MaxDecompressedSize limits the maximum size of decompressed request body in bytes. If the decompressed body exceeds this limit, the middleware returns HTTP 413 error. This prevents zip bomb attacks where small compressed payloads decompress to huge sizes. Default: 100 * MB (104,857,600 bytes) Set to -1 to disable limits (not recommended in production).L29
包源码中的函数
类型源码
func Decompress() echo.MiddlewareFuncL53
func DecompressWithConfig(config DecompressConfig) echo.MiddlewareFuncL61
// Effective defaults applied when fields are left unset.
DecompressConfig{
Skipper: DefaultSkipper,
GzipDecompressPool: &DefaultGzipDecompressPool{},
MaxDecompressedSize: 100 * MB,
}