QueryDepthLimiter
This extension adds a validator to limit the query depth of GraphQL operations.
Usage example:
import strawberryfrom strawberry.extensions import QueryDepthLimiter schema = strawberry.Schema(    Query,    extensions=[        QueryDepthLimiter(max_depth=10),    ])API reference:
class QueryDepthLimiter(max_depth, ignore=None, callback=None)max_depth: int
The maximum allowed depth for any operation in a GraphQL document.
ignore: Optional[List[IgnoreType]]
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: Optional[Callable[[Dict[str, int]], None]
Called each time validation runs. Receives a dictionary which is a map of the depths for each operation.
More examples:
Ignoring fields
import strawberryfrom strawberry.extensions import QueryDepthLimiter schema = strawberry.Schema(    Query,    extensions=[        QueryDepthLimiter(          max_depth=2,          ignore=["user"]        ),    ])
# This query failsschema.execute("""
  query TooDeep {
    book {
      author {
        publishedBooks {
          title
        }
      }
    }
  }
""")
# This query succeeds because the `user` field is ignoredschema.execute("""
  query NotTooDeep {
    user {
      favouriteBooks {
        author {
          publishedBooks {
            title
          }
        }
      }
    }
  }
""")Ignoring fields with regex
import reimport strawberryfrom strawberry.extensions import QueryDepthLimiter schema = strawberry.Schema(    Query,    extensions=[        QueryDepthLimiter(          max_depth=2,          ignore=[re.compile(r".*favourite.*"]        ),    ])
# This query succeeds because an field that contains `favourite` is ignoredschema.execute("""
  query NotTooDeep {
    user {
      favouriteBooks {
        author {
          publishedBooks {
            title
          }
        }
      }
    }
  }
""")Ignoring fields with a function
import strawberryfrom strawberry.extensions import QueryDepthLimiter schema = strawberry.Schema(    Query,    extensions=[        QueryDepthLimiter(          max_depth=2,          ignore=[lambda field_name: field_name == "user"]        ),    ])
schema.execute("""
  query NotTooDeep {
    user {
      favouriteBooks {
        author {
          publishedBooks {
            title
          }
        }
      }
    }
  }
""")