1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
---
title: Add Validation Rules
summary: Add GraphQL validation rules.
tags: validation,security
---
# `AddValidationRules`
This extension allows you add custom validation rules.
See
[graphql.validation.rules.custom](https://github.com/graphql-python/graphql-core/tree/main/src/graphql/validation/rules/custom)
for some custom rules that can be added from GraphQl-core.
## Usage example:
```python
import strawberry
from strawberry.extensions import AddValidationRules
from graphql import ValidationRule
@strawberry.type
class Query:
@strawberry.field
def hello(self) -> str:
return "Hello, world!"
class MyCustomRule(ValidationRule): ...
schema = strawberry.Schema(
Query,
extensions=[
AddValidationRules(MyCustomRule),
],
)
```
## API reference:
```python
class AddValidationRules(validation_rules): ...
```
#### `validation_rules: List[Type[ASTValidationRule]]`
List of GraphQL validation rules.
## More examples:
<details>
<summary>Adding a custom rule</summary>
```python
import strawberry
from strawberry.extensions import AddValidationRules
from graphql import ValidationRule
@strawberry.type
class 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'"
```
</details>
<details>
<summary>Adding the `NoDeprecatedCustomRule` from GraphQL-core</summary>
```python
import strawberry
from strawberry.extensions import AddValidationRules
from graphql.validation import NoDeprecatedCustomRule
@strawberry.type
class Query:
@strawberry.field
def hello(self) -> str:
return "Hello, world!"
schema = strawberry.Schema(
Query,
extensions=[
AddValidationRules([NoDeprecatedCustomRule]),
],
)
```
</details>
<details>
<summary>Adding the `NoSchemaIntrospectionCustomRule` from GraphQL-core</summary>
```python
import strawberry
from strawberry.extensions import AddValidationRules
from graphql.validation import NoSchemaIntrospectionCustomRule
@strawberry.type
class Query:
@strawberry.field
def hello(self) -> str:
return "Hello, world!"
schema = strawberry.Schema(
Query,
extensions=[
AddValidationRules([NoSchemaIntrospectionCustomRule]),
],
)
```
</details>
|