Object types
Object types are the fundamentals of any GraphQL schema, the are used to defined the kind of objects that exist in a schema. Object types are created by defining a name and a list of fields, hereβs an example object type defined using the GraphQL schema language:
type Character { name: String! age: Int!}
A note on Query, Mutation and Subscription
While reading about GraphQL you might have encountered 3 special object types: Query
, Mutation
and Subscription
. They are defined as standard object types, with the difference that they are also used as entry point for your schema (also referred as root types).
Query
is the entry point for all the query operationsMutation
is the entry point for all the mutationsSubscription
is the entry point for all the subscriptions.
For a walk-through on how to define schemas, read the schema basics.
Defining object types
In Strawberry, you can define object types by using the @strawberry.type
decorator, like this:
import strawberry
@strawberry.typeclass Character: name: str age: int
type Character { name: String! age: int!}
You can also refer to other types, like this:
import strawberry
@strawberry.typeclass Character: name: str age: int
@strawberry.typeclass Book: title: str main_character: Character
type Character { name: String! age: Int!}
type Book { title: String! mainCharacter: Character!}
API
@strawberry.type(name: str = None, description: str = None)
Creates an object type from a class definition.
name
: if set this will be the GraphQL name, otherwise the GraphQL will be generated by camel-casing the name of the class.
description
: this is the GraphQL description that will be returned when introspecting the schema or when navigating the schema using GraphiQL.