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.type
class 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.type
class User:
    name: str
 
 
@strawberry.type
class 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))
Edit this page on GitHub