If a GraphQL schema is provided, gql will validate the queries locally before sending them to the backend. If no schema is provided, gql will send the query to the backend without local validation.
You can either provide a schema yourself, or you can request gql to get the schema from the backend using introspection.
Using a provided schema¶
The schema can be provided as a String (which is usually stored in a .graphql file):
with open('path/to/schema.graphql') as f: schema_str = f.read() client = Client(schema=schema_str)
You can download a schema from a server by using gql-cli
$ gql-cli https://SERVER_URL/graphql --print-schema > schema.graphql
OR can be created using python classes:
from .someSchema import SampleSchema # SampleSchema is an instance of GraphQLSchema client = Client(schema=SampleSchema)
See tests/starwars/schema.py for an example of such a schema.
In order to get the schema directly from the GraphQL Server API using the transport, you need to set the fetch_schema_from_transport argument of Client to True, and the client will fetch the schema directly after the first connection to the backend.