AddValidationRules#

This extension allows you add custom validation rules.

See graphql.validation.rules.custom for some custom rules that can be added from GraphQl-core.

Usage example:#

import strawberry
from strawberry.extensions import AddValidationRules
from graphql import ValidationRule


class MyCustomRule(ValidationRule):
    ...


schema = strawberry.Schema(
    Query,
    extensions=[
        AddValidationRules(MyCustomRule),
    ],
)

API reference:#

class AddValidationRules(validation_rules):
    ...

validation_rules: List[Type[ASTValidationRule]]#

List of GraphQL validation rules.

More examples:#

Adding a custom rule
import strawberry
from strawberry.extensions import AddValidationRules
from graphql import ValidationRule


class CustomRule(ValidationRule):
    def enter_field(self, node, *args) -> None:
        if node.name.value == "example":
            self.report_error(GraphQLError("Can't query field 'example'"))


schema = strawberry.Schema(
    Query,
    extensions=[
        AddValidationRules([CustomRule]),
    ],
)

result = schema.execute_sync("{ example }")

assert str(result.errors[0]) == "Can't query field 'example'"
Adding the `NoDeprecatedCustomRule` from GraphQL-core
import strawberry
from strawberry.extensions import AddValidationRules
from graphql.validation import NoDeprecatedCustomRule

schema = strawberry.Schema(
    Query,
    extensions=[
        AddValidationRules([NoDeprecatedCustomRule]),
    ],
)
Adding the `NoSchemaIntrospectionCustomRule` from GraphQL-core
import strawberry
from strawberry.extensions import AddValidationRules
from graphql.validation import NoSchemaIntrospectionCustomRule

schema = strawberry.Schema(
    Query,
    extensions=[
        AddValidationRules([NoSchemaIntrospectionCustomRule]),
    ],
)