repositorypackage
0.0.0-20250120084930-125b1e7c2cca
Repository: https://github.com/vadymbarabanov/router.git
Documentation: pkg.go.dev
# README
router
Simple golang http router with middlewares
Features
Usage
Middleware
package main
import (
"net/http"
rt "github.com/vadymbarabanov/router"
)
func main() {
router := rt.NewRouter()
router.Use(func(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
log.Printf("%s %s %s", r.Method, r.Proto, r.URL.Path)
next(w, r)
}
})
router.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("world!"))
})
http.ListenAndServe(":4000", router.Mux())
}
Group
package main
import (
"net/http"
rt "github.com/vadymbarabanov/router"
)
func main() {
router := rt.NewRouter()
router.Group(func(g *rt.Router) {
g.Use(customGroupMiddleware) // group scoped middleware
g.HandleFunc("GET /group-route", func(w http.ResponseWriter, r *http.Request) { /* ... */ })
g.Group(func(g *rt.Router) { /* ... */ }) // nested groups
})
http.ListenAndServe(":4000", router.Mux())
}
Sub-router
package main
import (
"net/http"
rt "github.com/vadymbarabanov/router"
)
func main() {
router := rt.NewRouter()
router.HandleFunc("GET /hello", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("world!"))
})
protectedRouter := rt.NewRouter()
protectedRouter.Use(authMiddleware)
protectedRouter.HandleFunc("GET /profile", func(w http.ResponseWriter, r *http.Request) {
// ...
})
router.Mount(protectedRouter)
http.ListenAndServe(":4000", router.Mux())
}