Basic Usage
Basic Usage Examples
Section titled “Basic Usage Examples”Hello World
Section titled “Hello World”package main
import "github.com/fox-gonic/fox"
func main() { r := fox.Default()
r.GET("/", func() string { return "Hello, World!" })
r.Run(":8080")}REST API Example
Section titled “REST API Example”package main
import ( "github.com/fox-gonic/fox")
type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"`}
type CreateUserRequest struct { Name string `json:"name" binding:"required"` Email string `json:"email" binding:"required,email"`}
type UpdateUserRequest struct { ID int `uri:"id" binding:"required"` Name string `json:"name" binding:"required"` Email string `json:"email" binding:"required,email"`}
var users = []User{ {ID: 1, Name: "John Doe", Email: "john@example.com"}, {ID: 2, Name: "Jane Smith", Email: "jane@example.com"},}
func main() { r := fox.Default()
// List users r.GET("/users", func() []User { return users })
// Get user by ID r.GET("/users/:id", func(id int) (*User, error) { for _, u := range users { if u.ID == id { return &u, nil } } return nil, fox.ErrNotFound })
// Create user r.POST("/users", func(req *CreateUserRequest) (*User, error) { user := User{ ID: len(users) + 1, Name: req.Name, Email: req.Email, } users = append(users, user) return &user, nil })
// Update user r.PUT("/users/:id", func(req *UpdateUserRequest) (*User, error) { for i, u := range users { if u.ID == req.ID { users[i].Name = req.Name users[i].Email = req.Email return &users[i], nil } } return nil, fox.ErrNotFound })
// Delete user r.DELETE("/users/:id", func(id int) error { for i, u := range users { if u.ID == id { users = append(users[:i], users[i+1:]...) return nil } } return fox.ErrNotFound })
r.Run(":8080")}With Middleware
Section titled “With Middleware”package main
import ( "time" "github.com/fox-gonic/fox" "github.com/gin-gonic/gin")
func TimingMiddleware() gin.HandlerFunc { return func(c *gin.Context) { start := time.Now()
c.Next()
latency := time.Since(start) logger := fox.GetLogger(c) logger.Info("Request completed", "latency_ms", latency.Milliseconds(), ) }}
func main() { r := fox.Default() r.Use(TimingMiddleware())
r.GET("/api/data", func() map[string]string { time.Sleep(100 * time.Millisecond) // Simulate work return map[string]string{ "message": "Data retrieved", } })
r.Run(":8080")}Next Steps
Section titled “Next Steps”- Quick Start - Comprehensive guide
- Features - Explore Fox features