Validation
Rue includes a built-in validator for struct validation using tags.
Usage
type CreateUser struct {
Name string `json:"name" validate:"required"`
Email string `json:"email" validate:"required,email"`
Age int `json:"age" validate:"min=18,max=120"`
Role string `json:"role" validate:"oneof=admin user guest"`
}
r.POST("/users", func(c *rue.Context) {
var user CreateUser
if err := c.BindJSON(&user); err != nil {
c.AbortWithStatus(http.StatusBadRequest)
return
}
if err := c.Validate(&user); err != nil {
c.JSON(http.StatusBadRequest, rue.H{"errors": err})
return
}
c.JSON(http.StatusCreated, user)
})
Validation Rules
| Rule | Description | Example |
|---|---|---|
required | Field must not be empty | validate:"required" |
min=N | Minimum value/length | validate:"min=18" |
max=N | Maximum value/length | validate:"max=100" |
len=N | Exact length | validate:"len=10" |
email | Valid email format | validate:"email" |
url | Valid URL format | validate:"url" |
regex=pattern | Match regex | validate:"regex=^[a-z]+$" |
oneof=a b c | One of values | validate:"oneof=admin user" |