Browse Source

添加Prepare方法,在执行路由方法前执行

master
13715390423 6 years ago
parent
commit
a9ec63f09d
  1. 20
      example/app/ctltest.go
  2. 2
      example/main.go
  3. 10
      src/core/router.go

20
example/app/ctltest.go

@ -0,0 +1,20 @@
package app
import (
"log"
"github.com/ouxuanserver/osmanthuswine/src/core"
)
type Ctltest struct {
core.Controller
}
func (that *Ctltest) Prepare() {
//该方法会在Method执行前调用,用户扩展类似校验登陆
log.Println("Prepare")
}
func (that *Ctltest) Test() {
that.DisplayByData("test")
}

2
example/main.go

@ -8,6 +8,6 @@ import (
func main() {
core.GetInstanceRouterManage().Registered(&app.Wstest{})
//core.GetInstanceRouterManage().Registered(&app.Test{})
core.GetInstanceRouterManage().Registered(&app.Ctltest{})
osmanthuswine.Run()
}

10
src/core/router.go

@ -1,11 +1,12 @@
package core
import (
"github.com/ouxuanserver/osmanthuswine/src/interfaces"
"log"
"reflect"
"strings"
"unicode"
"github.com/ouxuanserver/osmanthuswine/src/interfaces"
)
type RouterManage struct {
@ -101,12 +102,19 @@ func (rm *RouterManage) RouterSend(urlPath string, request Request, response Res
}
init := vc.MethodByName("ControllerInit")
prepare := vc.MethodByName("Prepare")
if init.IsValid() {
init.Call([]reflect.Value{reflect.ValueOf(request), reflect.ValueOf(response)})
if prepare.IsValid() {
prepare.Call(nil)
}
f.Call(nil)
} else {
//兼容模式
log.Println("兼容模式")
if prepare.IsValid() {
prepare.Call(nil)
}
f.Call([]reflect.Value{reflect.ValueOf(request), reflect.ValueOf(response)})
}

Loading…
Cancel
Save