Validation
Azu provides comprehensive input validation using the Schema library, offering type-safe validation with detailed error messages, custom validation rules, and seamless integration with request contracts.
What is Validation?
Validation in Azu provides:
Type Safety: Compile-time type checking for validation rules
Comprehensive Rules: Built-in validation rules for common scenarios
Custom Validation: Support for custom validation logic
Error Messages: Detailed, actionable error messages
Integration: Seamless integration with request contracts
Basic Validation
Simple Validation
struct UserRequest
include Azu::Request
getter name : String
getter email : String
getter age : Int32?
def initialize(@name = "", @email = "", @age = nil)
end
# Basic validation rules
validate name, presence: true
validate email, presence: true, format: /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
validate age, numericality: {greater_than: 0, less_than: 150}, allow_nil: true
endValidation Methods
Built-in Validation Rules
Presence Validation
Length Validation
Format Validation
Numerical Validation
Inclusion/Exclusion Validation
Custom Validation
Custom Validation Methods
Conditional Validation
Error Handling
Validation Error Response
Error Handling in Endpoints
Advanced Validation
Nested Object Validation
Array Validation
File Validation
Validation Testing
Unit Testing
Integration Testing
Performance Considerations
Lazy Validation
Validation Caching
Best Practices
1. Use Appropriate Validation Rules
2. Provide Clear Error Messages
3. Use Conditional Validation
4. Handle Validation Errors Gracefully
5. Test Validation Thoroughly
Next Steps
Now that you understand validation:
Request Contracts - Use validation in request contracts
Error Handling - Handle validation errors
Testing - Test validation rules
Security - Implement security validation
Performance - Optimize validation performance
Validation in Azu provides a powerful way to ensure data integrity and security. With comprehensive rules, custom validation, and detailed error messages, it makes building robust applications straightforward and reliable.
Last updated
Was this helpful?
