mirror of
https://github.com/graphql-python/graphene.git
synced 2024-11-26 11:33:55 +03:00
46 lines
1.3 KiB
ReStructuredText
46 lines
1.3 KiB
ReStructuredText
Validators
|
|
==========
|
|
|
|
Validation rules help validate a given GraphQL query, before executing it. To help with common use
|
|
cases, graphene provides a few validation rules out of the box.
|
|
|
|
|
|
Depth limit Validator
|
|
-----------------
|
|
The depth limit validator helps to prevent execution of malicious
|
|
queries. It takes in the following arguments.
|
|
|
|
- ``max_depth`` is the maximum allowed depth for any operation in a GraphQL document.
|
|
- ``ignore`` Stops recursive depth checking based on a field name. Either a string or regexp to match the name, or a function that returns a boolean
|
|
- ``callback`` Called each time validation runs. Receives an Object which is a map of the depths for each operation.
|
|
|
|
Example
|
|
-------
|
|
|
|
Here is how you would implement depth-limiting on your schema.
|
|
|
|
.. code:: python
|
|
from graphql import validate
|
|
from graphene import ObjectType, Schema, String
|
|
from graphene.validation import depth_limit_validator
|
|
|
|
|
|
class MyQuery(ObjectType):
|
|
name = String(required=True)
|
|
|
|
|
|
schema = Schema(query=MyQuery)
|
|
|
|
# Queries which have a depth more than 20
|
|
# will not be executed.
|
|
|
|
validation_errors = validate(
|
|
schema=schema,
|
|
document='THE QUERY',
|
|
rules=(
|
|
depth_limit_validator(
|
|
max_depth=20
|
|
),
|
|
)
|
|
)
|