Skip to content

Router

The Router is the core component of Fox, handling request routing and middleware.

Create a new router without any middleware:

r := fox.New()

Create a router with default middleware (Logger and Recovery):

r := fox.Default()
r.GET("/path", handler)
r.POST("/path", handler)
r.PUT("/path", handler)
r.DELETE("/path", handler)
r.PATCH("/path", handler)
r.HEAD("/path", handler)
r.OPTIONS("/path", handler)

Create route groups with shared prefix and middleware:

api := r.Group("/api")
api.Use(authMiddleware())
{
api.GET("/users", listUsers)
api.POST("/users", createUser)
}
v1 := api.Group("/v1")
{
v1.GET("/products", listProducts)
}

Route based on domain names:

// Exact domain
r.Domain("api.example.com").GET("/users", handler)
// Wildcard
r.Domain("*.example.com").GET("/info", handler)
// Regex
r.DomainRegex(`^([a-z]+)\.example\.com$`).GET("/", handler)
// Global middleware
r.Use(middleware1(), middleware2())
// Group middleware
api := r.Group("/api")
api.Use(authMiddleware())
import "github.com/fox-gonic/fox/middleware"
// Logger middleware
r.Use(middleware.Logger())
// Recovery middleware
r.Use(middleware.Recovery())
// CORS middleware
r.Use(middleware.CORS())
r.Run(":8080")
r.RunTLS(":8443", "cert.pem", "key.pem")
server := &http.Server{
Addr: ":8080",
Handler: r,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
}
server.ListenAndServe()
r := fox.New(
fox.WithLoggerConfig(loggerConfig),
fox.WithMaxMemory(32 << 20), // 32 MB
fox.WithTrustedProxies([]string{"127.0.0.1"}),
)