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
end

Validation 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:

  1. Request Contracts - Use validation in request contracts

  2. Error Handling - Handle validation errors

  3. Testing - Test validation rules

  4. Security - Implement security validation

  5. 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?