Expand description
Query Validator
This module provides query validation for GraphQL queries. It validates:
- Query depth (maximum nesting levels)
- Query complexity (weighted scoring of fields)
- Query size (maximum bytes)
§Architecture
The Query Validator acts as the third layer in the security middleware:
GraphQL Query String
↓
QueryValidator::validate()
├─ Check 1: Validate query size
├─ Check 2: Parse and analyze query structure
├─ Check 3: Check query depth
└─ Check 4: Check query complexity
↓
Result<QueryMetrics> (validation passed or error)§Examples
ⓘ
use fraiseql_core::security::{QueryValidator, QueryValidatorConfig};
// Create validator with standard limits
let config = QueryValidatorConfig {
max_depth: 10,
max_complexity: 1000,
max_size_bytes: 100_000,
};
let validator = QueryValidator::from_config(config);
// Validate a query
let query = "{ user { posts { comments { author { name } } } } }";
let metrics = validator.validate(query)?;
println!("Query depth: {}", metrics.depth);
println!("Query complexity: {}", metrics.complexity);Structs§
- Query
Metrics - Query metrics computed during validation
- Query
Validator - Query Validator
- Query
Validator Config - Query validation configuration