Validation
Updated on
Jun 19, 2025
Data is the most important thing about the application. Receiving, checking, and standardizing data is always necessary. Therefore, the gFly framework has a built-in library to check data from users.
Validation provides a set of predefined rules sufficient to check today’s common data. However, you can also optionally add any new checking rules of your own.
Note
IMPORTANT!
Define validation inside DTO struct file by using tag validate
// SignIn struct to describe login user.
type SignIn struct {
Username string `json:"username" validate:"required,email,lte=255"`
Password string `json:"password" validate:"required,gte=6"`
}
// User contains user information
type User struct {
FirstName string `validate:"required"`
LastName string `validate:"required"`
Age uint8 `validate:"gte=0,lte=130"`
Email string `validate:"required,email"`
Gender string `validate:"oneof=male female prefer_not_to"`
FavouriteColor string `validate:"iscolor"` // alias for 'hexcolor|rgb|rgba|hsl|hsla'
Addresses []* Address `validate:"required,dive,required"` // a person can have a home and cottage...
}
// Address houses a users address information
type Address struct {
Street string `validate:"required"`
City string `validate:"required"`
Planet string `validate:"required"`
Phone string `validate:"required"`
}
import (
"github.com/gflydev/validation"
)
...
signIn := SignIn {
Username : "john@mail.com"
Password : "Pw1234"
}
errorData , err := validation .Check (signIn )
Note
IMPORTANT!
We already have an HTTP helper http_helpers.go
in directory app/http
. You can use to validate the request data to HTTP controller
// List API
func (h * ListApi ) Handle (c * core .Ctx ) error {
if err := http .ValidateFilter (c ); err != nil {
return err
}
...
}
// Post API
func (h * CreateApi ) Handle (c * core .Ctx ) error {
var requestBody request .CreateUser
if errData := http .Parse (c , & requestBody ); errData != nil {
return c .Error (errData )
}
if errData := http .Validate (requestBody ); errData != nil {
return c .Error (errData )
}
...
}
Default rules about Database
, Fields
, Network
, Strings
, Format
, Comparisons
, Other
, Aliases
Tag
Description
db_exists
Check single or array values is equal to a specific column in a table.
- validate:"db_exists=table.column"
- checks if a single value exists in the table
- validate:"db_exists=all:table.column"
- checks if all array values exist in the table
- validate:"db_exists=one:table.column"
- checks if at least one array value exists in the table
Tag
Description
eqcsfield
Field Equals Another Field (relative)
eqfield
Field Equals Another Field
fieldcontains
Check the indicated characters are present in the Field
fieldexcludes
Check the indicated characters are not present in the field
gtcsfield
Field Greater Than Another Relative Field
gtecsfield
Field Greater Than or Equal To Another Relative Field
gtefield
Field Greater Than or Equal To Another Field
gtfield
Field Greater Than Another Field
ltcsfield
Less Than Another Relative Field
ltecsfield
Less Than or Equal To Another Relative Field
ltefield
Less Than or Equal To Another Field
ltfield
Less Than Another Field
necsfield
Field Does Not Equal Another Field (relative)
nefield
Field Does Not Equal Another Field
Tag
Description
cidr
Classless Inter-Domain Routing CIDR
cidrv4
Classless Inter-Domain Routing CIDRv4
cidrv6
Classless Inter-Domain Routing CIDRv6
datauri
Data URL
fqdn
Full Qualified Domain Name (FQDN)
hostname
Hostname RFC 952
hostname_port
HostPort
hostname_rfc1123
Hostname RFC 1123
ip
Internet Protocol Address IP
ip4_addr
Internet Protocol Address IPv4
ip6_addr
Internet Protocol Address IPv6
ip_addr
Internet Protocol Address IP
ipv4
Internet Protocol Address IPv4
ipv6
Internet Protocol Address IPv6
mac
Media Access Control Address MAC
tcp4_addr
Transmission Control Protocol Address TCPv4
tcp6_addr
Transmission Control Protocol Address TCPv6
tcp_addr
Transmission Control Protocol Address TCP
udp4_addr
User Datagram Protocol Address UDPv4
udp6_addr
User Datagram Protocol Address UDPv6
udp_addr
User Datagram Protocol Address UDP
unix_addr
Unix domain socket end point Address
uri
URI String
url
URL String
http_url
HTTP URL String
url_encoded
URL Encoded
urn_rfc2141
Urn RFC 2141 String
Tag
Description
alpha
Alpha Only
alphanum
Alphanumeric
alphanumunicode
Alphanumeric Unicode
alphaunicode
Alpha Unicode
ascii
ASCII
boolean
Boolean
contains
Contains
containsany
Contains Any
containsrune
Contains Rune
endsnotwith
Ends Not With
endswith
Ends With
excludes
Excludes
excludesall
Excludes All
excludesrune
Excludes Rune
lowercase
Lowercase
multibyte
Multi-Byte Characters
number
Number
numeric
Numeric
printascii
Printable ASCII
startsnotwith
Starts Not With
startswith
Starts With
uppercase
Uppercase
Tag
Description
base64
Base64 String
base64url
Base64URL String
base64rawurl
Base64RawURL String
bic
Business Identifier Code (ISO 9362)
bcp47_language_tag
Language tag (BCP 47)
btc_addr
Bitcoin Address
btc_addr_bech32
Bitcoin Bech32 Address (segwit)
credit_card
Credit Card Number
mongodb
MongoDB ObjectID
cron
Cron
spicedb
SpiceDb ObjectID/Permission/Type
datetime
Datetime
e164
e164 formatted phone number
email
E-mail String
eth_addr
Ethereum Address
hexadecimal
Hexadecimal String
hexcolor
Hexcolor String
hsl
HSL String
hsla
HSLA String
html
HTML Tags
html_encoded
HTML Encoded
isbn
International Standard Book Number
isbn10
International Standard Book Number 10
isbn13
International Standard Book Number 13
issn
International Standard Serial Number
iso3166_1_alpha2
Two-letter country code (ISO 3166-1 alpha-2)
iso3166_1_alpha3
Three-letter country code (ISO 3166-1 alpha-3)
iso3166_1_alpha_numeric
Numeric country code (ISO 3166-1 numeric)
iso3166_2
Country subdivision code (ISO 3166-2)
iso4217
Currency code (ISO 4217)
json
JSON
jwt
JSON Web Token (JWT)
latitude
Latitude
longitude
Longitude
luhn_checksum
Luhn Algorithm Checksum (for strings and (u)int)
postcode_iso3166_alpha2
Postcode
postcode_iso3166_alpha2_field
Postcode
rgb
RGB String
rgba
RGBA String
ssn
Social Security Number SSN
timezone
Timezone
uuid
Universally Unique Identifier UUID
uuid3
Universally Unique Identifier UUID v3
uuid3_rfc4122
Universally Unique Identifier UUID v3 RFC4122
uuid4
Universally Unique Identifier UUID v4
uuid4_rfc4122
Universally Unique Identifier UUID v4 RFC4122
uuid5
Universally Unique Identifier UUID v5
uuid5_rfc4122
Universally Unique Identifier UUID v5 RFC4122
uuid_rfc4122
Universally Unique Identifier UUID RFC4122
md4
MD4 hash
md5
MD5 hash
sha256
SHA256 hash
sha384
SHA384 hash
sha512
SHA512 hash
ripemd128
RIPEMD-128 hash
ripemd128
RIPEMD-160 hash
tiger128
TIGER128 hash
tiger160
TIGER160 hash
tiger192
TIGER192 hash
semver
Semantic Versioning 2.0.0
ulid
Universally Unique Lexicographically Sortable Identifier ULID
cve
Common Vulnerabilities and Exposures Identifier (CVE id)
Tag
Description
eq
Equals
eq_ignore_case
Equals ignoring case
gt
Greater than
gte
Greater than or equal
lt
Less Than
lte
Less Than or Equal
ne
Not Equal
ne_ignore_case
Not Equal ignoring case
Tag
Description
dir
Existing Directory
dirpath
Directory Path
file
Existing File
filepath
File Path
image
Image
isdefault
Is Default
len
Length
max
Maximum
min
Minimum
oneof
One Of
required
Required
required_if
Required If
required_unless
Required Unless
required_with
Required With
required_with_all
Required With All
required_without
Required Without
required_without_all
Required Without All
excluded_if
Excluded If
excluded_unless
Excluded Unless
excluded_with
Excluded With
excluded_with_all
Excluded With All
excluded_without
Excluded Without
excluded_without_all
Excluded Without All
unique
Unique
Tag
Description
iscolor
hexcolor|rgb|rgba|hsl|hsla
country_code
iso3166_1_alpha2|iso3166_1_alpha3|iso3166_1_alpha_numeric