In Go Gin, data binding (extracting request data into a struct) and validation are handled using struct tags. Gin supports binding and validating data from JSON, forms, query parameters, etc.
🔹 1. Binding JSON Data
Gin provides methods to bind request data to structs:
c.ShouldBind()orc.ShouldBindJSON(): Returns an error if data is invalid.c.MustBind()orc.MustBindJSON(): Automatically returns HTTP 400 if an error occurs.
Example with JSON request:
📌 Explanation:
binding:"required"→ Field is mandatory.binding:"email"→ Must be a valid email.binding:"gte=18,lte=60"→ Age must be between 18 and 60.
🔹 2. Binding Form Data (x-www-form-urlencoded)
For form-data requests, use ShouldBind() or ShouldBindForm():
📌 Notes:
form:"username"→ Extracts data from form fields.binding:"min=6"→ Password must have at least 6 characters.
🔹 3. Binding Query Parameters
If data comes from query parameters, use ShouldBindQuery():
📌 Query Example:GET /search?page=1&limit=10
🔹 4. Custom Validation
For custom validation rules, use validator.v10:
📌 Key Features:
RegisterValidation("checkAge", checkAge)→ Registers custom validation.binding:"alphanum"→ Ensures the username contains only letters and numbers.checkAgefunction → Prevents users under 18 years old.
🔹 Summary
| Method | Data Source |
|---|---|
ShouldBindJSON(&obj) | JSON body |
ShouldBind(&obj) | Auto-detects (JSON, form, query) |
ShouldBindQuery(&obj) | Query parameters |
ShouldBindForm(&obj) | Form-data |
✅ Using validation in Gin ensures data integrity, improves security, and simplifies API development! 🚀
No comments:
Post a Comment