Schema Configurations
Strawberry allows to customise how the schema is generated by passing configurations.
To customise the schema you can create an instance of StrawberryConfig , as
shown in the example below:
import strawberry
from strawberry.schema.config import StrawberryConfig
@strawberry.typeclass Query: example_field: str
schema = strawberry.Schema(query=Query, config=StrawberryConfig(auto_camel_case=False)) In this case we are disabling the auto camel casing feature, so your output schema will look like this:
type Query { example_field: String!} Available configurations
Hereβs a list of the available configurations:
auto_camel_case
By default Strawberry will convert the field names to camel case, so a field
like example_field will be converted to exampleField . You can disable this
feature by setting auto_camel_case to False .
schema = strawberry.Schema(query=Query, config=StrawberryConfig(auto_camel_case=False)) default_resolver
By default Strawberry will use the getattr function as the default resolver.
You can customise this by setting the default_resolver configuration.
This can be useful in cases you want to allow returning a dictionary from a resolver.
import strawberry
from strawberry.schema.config import StrawberryConfig
def custom_resolver(obj, field): try: return obj[field] except (KeyError, TypeError): return getattr(obj, field)
@strawberry.typeclass User: name: str
@strawberry.typeclass Query: @strawberry.field def user(self, info) -> User: # this won't type check, but will work at runtime return {"name": "Patrick"}
schema = strawberry.Schema( query=Query, config=StrawberryConfig(default_resolver=custom_resolver)) relay_max_results
By default Strawberryβs max limit for relay connections is 100. You can
customise this by setting the relay_max_results configuration.
schema = strawberry.Schema(query=Query, config=StrawberryConfig(relay_max_results=50)) disable_field_suggestions
By default Strawberry will suggest fields when a field is not found in the
schema. You can disable this feature by setting disable_field_suggestions to
True .
schema = strawberry.Schema( query=Query, config=StrawberryConfig(disable_field_suggestions=True)) info_class
By default Strawberry will create an object of type strawberry.Info when the
user defines info: Info as a parameter to a type or query. You can change this
behaviour by setting info_class to a subclass of strawberry.Info .
This can be useful when you want to create a simpler interface for info- or
context-based properties, or if you wanted to attach additional properties to
the Info class.
class CustomInfo(Info): @property def response_headers(self) -> Headers: return self.context["response"].headers
schema = strawberry.Schema(query=Query, config=StrawberryConfig(info_class=CustomInfo))