1 Star 0 Fork 0

Souki/go-framework

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
server_http_middlerware.go 933 Bytes
一键复制 编辑 原始数据 按行查看 历史
王少奇 提交于 2021-07-29 11:31 +08:00 . 修改 位置
package httpserver
import "runtime/debug"
type Middleware func(ctx *Ctx, next func(ctx *Ctx))
//处理中间件
var handlerMiddleware = func(f func(ctx *Ctx), middleware []Middleware) func(ctx *Ctx) {
funcArr := []func(*Ctx){}
funcArr = append(funcArr, func(ctx *Ctx) {
f(ctx)
})
//新增中间件的处理
j := 0
for i := len(middleware) - 1; i >= 0; i-- {
index := i
t := j
funcArr = append(funcArr, func(ctx *Ctx) {
middleware[index](ctx, funcArr[t])
})
j++
}
return funcArr[len(funcArr)-1]
}
//response
var DefaultResponseMiddleware Middleware = func(ctx *Ctx, next func(*Ctx)) {
ctx.SetResponseHandler(NewHttpResponse(ctx.Writer()))
next(ctx)
}
//panic处理
var DefaultPanicMiddleware Middleware = func(ctx *Ctx, next func(*Ctx)) {
defer func() {
if err := recover(); err != nil {
debug.PrintStack()
ctx.WriteHeader(500)
ctx.WriteStr("system busy")
return
}
}()
next(ctx)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/scottq/go-framework.git
git@gitee.com:scottq/go-framework.git
scottq
go-framework
go-framework
v1.1.1

搜索帮助