goft
搜索文档…
基本定义
原生gin的中间件无法定位到具体的URL。改造后目前支持路由级的中间件,支持绑定具体的URL进行中间件执行
路由级中间件的定义和全局中间没有任何不同。
区别在于不要在main函数注册,而是在控制器注册

一段控制器的Build函数

1
func(this *IndexController) Build(goft *goft.Goft){
2
goft.Handle("GET","/",this.Index).
3
HandleWithFairing("GET","/test",
4
this.IndexTest,
5
middlewares.NewIndexTest())
6
}
Copied!
这个build函数定义了两个路由
1、/
2、/test
其中 我们在/test 这个路由上定义个 单独的中间件。注意全局中间件优先级最高,如果定义了路由中间件。两者都会执行
1
type IndexTest struct {
2
3
}
4
func NewIndexTest() *IndexTest {
5
return &IndexTest{}
6
}
7
func(this *IndexTest) OnRequest(ctx *gin.Context) error{
8
return nil
9
}
10
func(this *IndexTest) OnResponse(result interface{}) (interface{}, error){
11
if m,ok:=result.(gin.H);ok{
12
m["metadata"]="index test"
13
return m,nil
14
}
15
return result,nil
16
}
Copied!
最近更新 1yr ago