一般只在未知输入和不可靠请求时使用
r.Use(znet.Recovery(func(c *znet.Context, err error) {
zlog.Error("Recovery", err)
}))
r.Use(znet.RewriteErrorHandler(func(c *znet.Context, err error) {
c.String(500, err.Error())
}))
// 用于在处理路由里返回错误的请求
r.Any("/", func() (string, error) {
return "", errors.New("非法请求")
})
请求超过指定时长直接返回504或自定义返回信息
import "github.com/sohaha/zlsgo/znet/timeout"
// 默认超时返回的 HTTP 状态码为:504
// 后面全部路由都5秒后超时
r.Use(timeout.New(5 * time.Second))
// 单独一个请求设置超时5秒后超时
r.GET("/timeout_1", timeout.New(5), func(c *znet.Context) {
c.String(200, "Hello world")
})
// 自定义返回内容
r.GET("/timeout_2", timeout.New(5,func(c *znet.Context) {
c.String(200, "Has timed out")
}), func(c *znet.Context) {
c.String(200, "Hello world")
})
import "github.com/sohaha/zlsgo/znet/cors"
r.Use(cors.Default())
// 如需指定域名
r.Use(cors.New(&cors.Config{
// 支持模糊匹配,下面表示支持 <https://qq.com> 与 (任意字符)://w(任意一个字符).qq.com
Domains: []string{"<https://qq.com>","*://w?.qq.com"},
Methods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
Headers: []string{"X-Requested-With"},
CustomHandler: func(conf *cors.Config, c *znet.Context){},
})
import "github.com/sohaha/zlsgo/znet/gzip"
// 直接使用默认配置
r.Use(gzip.Default())
// 自定义选项
r.Use(gzip.New(gzip.Config{
CompressionLevel: 7,
PoolMaxSize: 200,
MinContentLength: 1024,
}))