title: Strawberry docs
General
Types
Codegen
Guides
Extensions
Editor integration
Concepts
Integrations
Federation
Operations
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 strawberryfrom strawberry.extensions import AddValidationRulesfrom graphql import ValidationRule
@strawberry.typeclass Query: @strawberry.field def hello(self) -> str: return "Hello, world!"
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 strawberryfrom strawberry.extensions import AddValidationRulesfrom graphql import ValidationRule
@strawberry.typeclass Query: @strawberry.field def hello(self) -> str: return "Hello, world!"
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 strawberryfrom strawberry.extensions import AddValidationRulesfrom graphql.validation import NoDeprecatedCustomRule
@strawberry.typeclass Query: @strawberry.field def hello(self) -> str: return "Hello, world!"
schema = strawberry.Schema( Query, extensions=[ AddValidationRules([NoDeprecatedCustomRule]), ],)
Adding the NoSchemaIntrospectionCustomRule
from GraphQL-core
import strawberryfrom strawberry.extensions import AddValidationRulesfrom graphql.validation import NoSchemaIntrospectionCustomRule
@strawberry.typeclass Query: @strawberry.field def hello(self) -> str: return "Hello, world!"
schema = strawberry.Schema( Query, extensions=[ AddValidationRules([NoSchemaIntrospectionCustomRule]), ],)