代码拉取完成,页面将自动刷新
同步操作将从 zakzou/router 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
router是一个go语言的路由分发包
go get -u github.com/zakzou/router
import (
"github.com/zakzou/router"
)
r := router.NewRouter()
r.StrictSlash(true)
r := route.NewRouter().StrictSlash(true)
home := r.HandleFunc("/home", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "home")
})
home.Methods("POST", "GET")
r.HandleFunc("/home", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "home")
}).Methods("GET").StrictSlash(false)
home.Name("home")
int
, any
, string
<[pattern:]paramName>
r.HandleFunc("/<param1>/<string:params2>/<int:user_id>/", func(w http.ResponseWriter, r *http.Request) {
query := r.URL.Query()
param1 := query.Get("param1")
param2 := query.Get("param2")
param3 := query.Get("param3")
fmt.Fprintln(w, param1, param2, param3)
})
中间件会在路由被调用之前调用,一个路由可以注册多个中间件
home.MiddlewareFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln("Middleware 1")
})
r := router.NewRouter().MiddlewareFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln("Middleware 0")
})
钩子会在执行路由的前后调用,目前支持2对钩子
HookBeforeRouter
每次请求前,无论路由是否存在,都会执行,在HookBeforeDispatch
之前HookAfterRouter
每次请求后,无论路由是否存在,都会执行,在HookAfterDispatch
之后HookBeforeDispatch
路由匹配成功后,路由分发之前执行HookAfterDispatch
路由匹配成功后,路由分发之后执行r.HookFunc(HookAfterDispatch, func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "hook")
})
UrlFor
可以为命名路由自动生成地址
r.HandleFunc("/user/profile/query/<int:user_id>/", func(w http.ResponseWriter, r *http.Request) {
}).Name("profile")
if urls, ok := r.UrlFor("profile", map[string]interface{}{"user_id": 100001}); ok {
println(urls)
}
if err := http.ListenAndServe(":9999", r); err != nil {
println(err.Error())
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。