本文整理匯總了Golang中github.com/ian-kent/gotcha/http.Session.Route方法的典型用法代碼示例。如果您正苦於以下問題:Golang Session.Route方法的具體用法?Golang Session.Route怎麽用?Golang Session.Route使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/ian-kent/gotcha/http.Session
的用法示例。
在下文中一共展示了Session.Route方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Serve
func (h *Router) Serve(session *http.Session) {
for _, route := range h.Routes {
if matches := route.Route.Pattern.FindStringSubmatch(session.Request.URL.Path); len(matches) > 0 {
_, ok := route.Route.Methods[session.Request.Method]
if ok {
for i, named := range route.Route.Pattern.SubexpNames() {
if len(named) > 0 {
log.Trace("Matched named pattern '%s': %s", named, matches[i])
session.Stash[named] = matches[i]
}
}
session.Route = route.Route
defer func() {
if e := recover(); e != nil {
switch e.(type) {
case string:
session.RenderException(500, errors.New(e.(string)))
default:
session.RenderException(500, e.(error))
}
session.Response.Send()
session.Response.Close()
}
}()
var wg sync.WaitGroup
wg.Add(1)
// func() will be executed only if *all* event handlers call next()
h.Config.Events.Emit(session, events.BeforeHandler, func() {
route.Handler.ServeHTTP(session)
h.Config.Events.Emit(session, events.AfterHandler, func() {
session.Response.Send()
session.Response.Close()
wg.Done()
})
})
wg.Wait()
return
}
}
}
// no pattern matched; send 404 response
h.Config.Events.Emit(session, events.BeforeHandler, func() {
session.RenderNotFound()
h.Config.Events.Emit(session, events.AfterHandler, func() {
session.Response.Send()
})
})
}