Super useful Go package to configure your HTTP routes using only the standard library. Define routes, middlewares, groups, and subgroups effortlessly!
This package acts like a Swiss Army Knife: It is tiny and compact, providing everything you need in just one file with less than 200 lines of code.
- You want to declaratively define your HTTP routes while using only the standard library.
- You want to define middlewares for your routes, groups, and subgroups while still relying on the standard library.
- You don’t want to use third-party libraries bloated with excessive functionalities that you might never use.
Simply clone the file into your project or import it using the following command:
go get github.com/dbarbosadev/[email protected]
serverMux := http.NewServeMux()
superRouter := supermuxer.New(serverMux)
superRouter.Get("/users", handler).Put("/users/{id}", handler)
superRouter.Post("/login", handler)
serverMux := http.NewServeMux()
superRouter := supermuxer.New(serverMux)
superRouter.AddMiddlewares(middleware1, middleware2)
superRouter.Get("/users", handler).Put("/users/{id}", handler)
superRouter.Post("/login", handler)
Create a group of routes from a copy of the original router without middlewares. This allows you to define separate route structures while maintaining the original route path.
serverMux := http.NewServeMux()
superRouter := supermuxer.New(serverMux)
superRouter.AddMiddlewares(middleware1, middleware2)
// Route "POST /login" with middleware1 and middleware2
superRouter.Post("/login", handler)
// Creates the users group
userRouter := superRouter.Group("/users")
// Group Route "GET /users" without middlewares
userRouter.Get("", handler)
userRouter.AddMiddlewares(middleware3)
// Group Route "Put /users/{id}" with middleware3
userRouter.Put("/{id}", handler)
Works the same way as the Group function, but the subgroup reuses the middlewares from the original router. This makes it easy to maintain middleware consistency across related routes.
serverMux := http.NewServeMux()
superRouter := supermuxer.New(serverMux)
superRouter.AddMiddlewares(middleware1, middleware2)
// Route "POST /login" with middleware1 and middleware2
superRouter.Post("/login", handler)
// Creates the users group
userRouter := superRouter.SubGroup("/users")
// Group Route "GET /users" with middlewares1 and middlewares2
userRouter.Get("", handler)
userRouter.AddMiddlewares(middleware3)
// Group Route "Put /users/{id}" with middlewares1, middlewares2 and middlewares3
userRouter.Put("/{id}", handler)