2.5 KiB
2.5 KiB
Router Package Documentation
A fast, lightweight HTTP router for Go with support for middleware, route groups, and path parameters.
Core Types
Router
Main router that implements http.Handler
.
router := router.New()
Handler
Request handler function type.
type Handler func(w http.ResponseWriter, r *http.Request, params []string)
Middleware
Function type for middleware.
type Middleware func(Handler) Handler
Group
Route group with a prefix.
group := router.Group("/api")
Router Methods
New()
Creates a new router.
router := router.New()
ServeHTTP(w, r)
Implements http.Handler
interface.
Use(mw ...Middleware)
Adds global middleware.
router.Use(loggingMiddleware, authMiddleware)
Handle(method, path, handler)
Registers a handler for the given method and path.
router.Handle("GET", "/users", listUsersHandler)
HTTP Method Shortcuts
router.Get("/users", listUsersHandler)
router.Post("/users", createUserHandler)
router.Put("/users/[id]", updateUserHandler)
router.Patch("/users/[id]", patchUserHandler)
router.Delete("/users/[id]", deleteUserHandler)
Group(prefix)
Creates a route group with prefix.
api := router.Group("/api")
WithMiddleware(mw ...Middleware)
Applies middleware to the next route registration.
router.WithMiddleware(authMiddleware).Get("/admin", adminHandler)
Group Methods
Use(mw ...Middleware)
Adds middleware to the group.
api.Use(apiKeyMiddleware)
Group(prefix)
Creates a nested group.
v1 := api.Group("/v1")
HTTP Method Shortcuts
api.Get("/users", listUsersHandler)
api.Post("/users", createUserHandler)
api.Put("/users/[id]", updateUserHandler)
api.Patch("/users/[id]", patchUserHandler)
api.Delete("/users/[id]", deleteUserHandler)
WithMiddleware(mw ...Middleware)
Applies middleware to the next route registration in this group.
api.WithMiddleware(authMiddleware).Get("/admin", adminHandler)
Path Parameters
Dynamic segments in paths are defined using square brackets.
router.Get("/users/[id]", func(w http.ResponseWriter, r *http.Request, params []string) {
id := params[0]
// ...
})
Wildcards
Wildcard segments capture all remaining path segments.
router.Get("/files/*path", func(w http.ResponseWriter, r *http.Request, params []string) {
path := params[0]
// ...
})
Notes:
- Wildcards must be the last segment in a path
- Only one wildcard is allowed per path