1 Star 0 Fork 0

gongpeng / keyauth-gp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
middleware.go 1.04 KB
一键复制 编辑 原始数据 按行查看 历史
gongpeng 提交于 2023-03-14 05:47 . 添加笔记
package middleware
import (
"log"
"net/http"
"time"
)
type Middleware func(http.Handler) http.Handler
type Router struct {
middlewareChain []Middleware
}
func NewRouter() *Router {
return &Router{}
}
func (r *Router) Use(m Middleware) {
r.middlewareChain = append(r.middlewareChain, m)
}
func (r *Router) Merge(h http.Handler) http.Handler {
var mergedHandler = h
// customizedHandler = logger(timeout(ratelimit(helloHandler)))
for i := len(r.middlewareChain) - 1; i >= 0; i-- {
mergedHandler = r.middlewareChain[i](mergedHandler)
}
return mergedHandler
}
func TimeMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(wr http.ResponseWriter, r *http.Request) {
timeStart := time.Now()
// next handler
next.ServeHTTP(wr, r)
timeElapsed := time.Since(timeStart)
log.Println(timeElapsed)
})
}
func LogMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(wr http.ResponseWriter, r *http.Request) {
log.Println("start")
// next handler
next.ServeHTTP(wr, r)
log.Println("end")
})
}
Go
1
https://gitee.com/gongpengABC/keyauth-gp.git
git@gitee.com:gongpengABC/keyauth-gp.git
gongpengABC
keyauth-gp
keyauth-gp
v0.0.9

搜索帮助