pub struct QueryValidator { /* private fields */ }Expand description
Query Validator
Validates incoming GraphQL queries against security policies. Acts as the third layer in the security middleware pipeline.
Delegates AST-based analysis to RequestValidator from
graphql::complexity — the single source of truth for depth,
complexity, and alias-amplification logic.
Implementations§
Source§impl QueryValidator
impl QueryValidator
Sourcepub const fn from_config(config: QueryValidatorConfig) -> Self
pub const fn from_config(config: QueryValidatorConfig) -> Self
Create a new query validator from configuration
Sourcepub const fn permissive() -> Self
pub const fn permissive() -> Self
Create validator with permissive settings
Sourcepub fn validate(&self, query: &str) -> Result<QueryMetrics, SecurityError>
pub fn validate(&self, query: &str) -> Result<QueryMetrics, SecurityError>
Validate a GraphQL query, enforcing all configured limits.
Performs checks in order:
- Query size (O(1) — no parsing)
- AST parse (rejects malformed GraphQL)
- Query depth
- Query complexity
- Alias count (alias amplification protection)
Returns QueryMetrics if all checks pass, or the first
SecurityError encountered.
§Errors
Returns SecurityError::QueryTooLarge if the query exceeds max_size_bytes.
Returns SecurityError::MalformedQuery if GraphQL syntax is invalid.
Returns SecurityError::QueryTooDeep if nesting depth exceeds max_depth.
Returns SecurityError::QueryTooComplex if complexity exceeds max_complexity.
Returns SecurityError::TooManyAliases if alias count exceeds max_aliases.
Sourcepub fn validate_with_variables(
&self,
query: &str,
variables: Option<&Value>,
) -> Result<QueryMetrics, SecurityError>
pub fn validate_with_variables( &self, query: &str, variables: Option<&Value>, ) -> Result<QueryMetrics, SecurityError>
Validate a GraphQL query with the request’s variables available for pagination-argument resolution.
Identical to validate, except a variable-valued
pagination argument (first: $n) is scored at its resolved value
rather than at the fail-closed ceiling (#869). Callers that have the
request variables must use this entry point, or legitimate
variable-paginated queries are over-scored and rejected.
§Errors
Same as validate.
Sourcepub const fn config(&self) -> &QueryValidatorConfig
pub const fn config(&self) -> &QueryValidatorConfig
Get the underlying configuration