# README
middleware

middleware 是实现 http.Handler 接口的中间件,提供了大部分实用的功能。
- auth 基本的验证处理;
- compress 对内容进行压缩;
- errorhandler 处理各类状态码下的输出;
- header 输出指定的报头;
- health 接口状态的监测;
- host 匹配指定的域名;
- ratelimit x-rate-limit 的相关实现;
- recovery 对 Panic 的处理;
- version 匹配从 Accept 报头中的版本号信息;
- debugger 用于输出测试的中间件;
安装
go get github.com/issue9/middleware/v2
版权
# Packages
Package auth 验证类的中间件.
Package compress 提供一个支持内容压缩的中间件.
Package debugger 提供测试和性能测试相关的中间件.
Package errorhandler 提供自定义错误处理功能
net/http 包中对于错误的处理是通过 http.Error() 进行的, 我们无法直接修改该方法,实现自定义的错误处理功能。 只能对 http.ResponseWriter.WriteHeader() 进行自定义, 在指定的状态下,抛出异常,再通过 recover 实现错误处理。
需要注意的是,如果采用了当前包的方案,那么默认情况下, 所有大于 400 的 WriteHeader 操作,都会被 panic, 如果你对某些操作不想按正常流程处理,可以使用 errorhandler.WriteHeader 代替默认的 ResponseWriter.WriteHeader 操作。.
Package header 用于指定输出的报头.
Package health API 状态检测.
Package host 提供了限定访问域名的中间件.
Package ratelimit 提供了 X-Rate-Limit 功能的中间件
X-Rate-Limit-Limit: 同一个时间段所允许的请求的最大数目; X-Rate-Limit-Remaining: 在当前时间段内剩余的请求的数量; X-Rate-Limit-Reset: 为了得到最大请求数所等待的秒数。
store := NewMemory(...) srv := New(store) h = srv.Middleware(h).
Package recovery 提供了处理 panic 操作的中间件
recovery.RecoverFunc(func(w http.ResponseWriter, msg interface{}) { fmt.Printf("recovery: %s", msg) }).MiddlewareFunc(func(w http.ResponseWriter, r *http.Request){ panic("panic") }).
Package version 提供一个限定版本号的中间件.
# Functions
Handler 按顺序将所有的中间件应用于 h.
HandlerFunc 按顺序将所有的中间件应用于 h.
NewManager 声明新的 Manager 实例.
# Type aliases
Middleware 将一个 http.Handler 封装成另一个 http.Handler.