add example for group router of ghttp.Server

This commit is contained in:
John
2019-09-14 23:36:02 +08:00
parent 953ea55899
commit 6d55b30b39
2 changed files with 70 additions and 78 deletions

View File

@ -1,78 +0,0 @@
package main
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/frame/gmvc"
"github.com/gogf/gf/net/ghttp"
)
type Object struct{}
func (o *Object) Show(r *ghttp.Request) {
r.Response.Writeln("Object Show")
}
func (o *Object) Delete(r *ghttp.Request) {
r.Response.Writeln("Object REST Delete")
}
func (o *Object) Shut(r *ghttp.Request) {
r.Response.Writeln("Object Shut")
}
type Controller struct {
gmvc.Controller
}
func (c *Controller) Show() {
c.Response.Writeln("Controller Show")
}
func (c *Controller) Post() {
c.Response.Writeln("Controller REST Post")
}
func (c *Controller) Shut() {
c.Response.Writeln("Controller Shut")
}
func Handler(r *ghttp.Request) {
r.Response.Writeln("Handler")
}
func HookHandler(r *ghttp.Request) {
r.Response.Writeln("Hook Handler")
}
func main() {
s := g.Server()
obj := new(Object)
ctl := new(Controller)
// 分组路由方法注册
//g := s.Group("/api")
//g.ALL ("*", HookHandler, ghttp.HOOK_BEFORE_SERVE)
//g.ALL ("/handler", Handler)
//g.ALL ("/ctl", ctl)
//g.GET ("/ctl/my-show", ctl, "Show")
//g.REST("/ctl/rest", ctl)
//g.ALL ("/obj", obj)
//g.GET ("/obj/my-show", obj, "Show")
//g.REST("/obj/rest", obj)
// 分组路由批量注册
s.Group("/api").Bind([]ghttp.GroupItem{
{"ALL", "/handler", Handler},
{"ALL", "/ctl", ctl},
{"GET", "/ctl/my-show", ctl, "Show"},
{"REST", "/ctl/rest", ctl},
{"ALL", "/obj", obj},
{"GET", "/obj/my-show", obj, "Show"},
{"REST", "/obj/rest", obj},
{"ALL", "*", HookHandler, ghttp.HOOK_BEFORE_SERVE},
})
s.SetPort(8199)
s.Run()
}

View File

@ -0,0 +1,70 @@
package main
import (
"net/http"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
"github.com/gogf/gf/os/glog"
)
func MiddlewareAuth(r *ghttp.Request) {
token := r.Get("token")
if token == "123456" {
r.Middleware.Next()
} else {
r.Response.WriteStatus(http.StatusForbidden)
}
}
func MiddlewareCORS(r *ghttp.Request) {
r.Response.CORSDefault()
r.Middleware.Next()
}
func MiddlewareLog(r *ghttp.Request) {
r.Middleware.Next()
glog.Println(r.Response.Status, r.URL.Path)
}
func main() {
s := g.Server()
s.Group("/", func(g *ghttp.RouterGroup) {
g.Middleware(MiddlewareLog)
})
s.Group("/api.v2", func(g *ghttp.RouterGroup) {
g.Middleware(MiddlewareAuth, MiddlewareCORS)
g.GET("/test", func(r *ghttp.Request) {
r.Response.Write("test")
})
g.Group("/order", func(g *ghttp.RouterGroup) {
g.GET("/list", func(r *ghttp.Request) {
r.Response.Write("list")
})
g.PUT("/update", func(r *ghttp.Request) {
r.Response.Write("update")
})
})
g.Group("/user", func(g *ghttp.RouterGroup) {
g.GET("/info", func(r *ghttp.Request) {
r.Response.Write("info")
})
g.POST("/edit", func(r *ghttp.Request) {
r.Response.Write("edit")
})
g.DELETE("/drop", func(r *ghttp.Request) {
r.Response.Write("drop")
})
})
g.Group("/hook", func(g *ghttp.RouterGroup) {
g.Hook("/*", ghttp.HOOK_BEFORE_SERVE, func(r *ghttp.Request) {
r.Response.Write("hook any")
})
g.Hook("/:name", ghttp.HOOK_BEFORE_SERVE, func(r *ghttp.Request) {
r.Response.Write("hook name")
})
})
})
s.SetPort(8199)
s.Run()
}