router: added middlewares

This commit is contained in:
2026-02-02 17:26:45 +02:00
parent c973fccc86
commit 0dac88fde8
5 changed files with 113 additions and 2 deletions
+11 -2
View File
@@ -6,6 +6,8 @@ import (
"regexp"
)
type MiddlewareFunc func(next Handler) Handler
type Handler interface {
ServeHTTP(rctx *Context)
}
@@ -17,15 +19,22 @@ func (handlerFunc HandlerFunc) ServeHTTP(rctx *Context) {
}
type Router struct {
headHandler Handler
routeHandler *Selector
}
func NewRouter() *Router {
selector := NewSelector()
return &Router{
routeHandler: NewSelector(),
routeHandler: selector,
headHandler: selector,
}
}
func (rout *Router) Use(mwFunc MiddlewareFunc) {
rout.headHandler = mwFunc(rout.headHandler)
}
func (rout *Router) Selector() *Selector {
return rout.routeHandler
}
@@ -60,7 +69,7 @@ func (rout *Router) Delete(path string, handlerFunc HandlerFunc) {
func (rout *Router) ServeHTTP(writer http.ResponseWriter, req *http.Request) {
rctx := NewContext(writer, req)
rout.routeHandler.ServeHTTP(rctx)
rout.headHandler.ServeHTTP(rctx)
}
func (rout *Router) NotFound(handlerFunc HandlerFunc) {