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

RuleDescriptionExample
requiredField must not be emptyvalidate:"required"
min=NMinimum value/lengthvalidate:"min=18"
max=NMaximum value/lengthvalidate:"max=100"
len=NExact lengthvalidate:"len=10"
emailValid email formatvalidate:"email"
urlValid URL formatvalidate:"url"
regex=patternMatch regexvalidate:"regex=^[a-z]+$"
oneof=a b cOne of valuesvalidate:"oneof=admin user"