mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-15 11:00:38 +03:00
82 lines
1.9 KiB
ReStructuredText
82 lines
1.9 KiB
ReStructuredText
|
Schema
|
||
|
======
|
||
|
|
||
|
A Schema is created by supplying the root types of each type of operation, query and mutation (optional).
|
||
|
A schema definition is then supplied to the validator and executor.
|
||
|
|
||
|
.. code:: python
|
||
|
my_schema = Schema(
|
||
|
query=MyRootQuery,
|
||
|
mutation=MyRootMutation,
|
||
|
)
|
||
|
|
||
|
Types
|
||
|
-----
|
||
|
|
||
|
There are some cases where the schema could not access all the types that we plan to have.
|
||
|
For example, when a field returns an ``Interface``, the schema doesn't know any of the
|
||
|
implementations.
|
||
|
|
||
|
In this case, we would need to use the ``types`` argument when creating the Schema.
|
||
|
|
||
|
|
||
|
.. code:: python
|
||
|
|
||
|
my_schema = Schema(
|
||
|
query=MyRootQuery,
|
||
|
types=[SomeExtraObjectType, ]
|
||
|
)
|
||
|
|
||
|
|
||
|
Querying
|
||
|
--------
|
||
|
|
||
|
If you need to query a schema, you can directly call the ``execute`` method on it.
|
||
|
|
||
|
|
||
|
.. code:: python
|
||
|
|
||
|
my_schema.execute('{ lastName }')
|
||
|
|
||
|
|
||
|
Auto CamelCase field names
|
||
|
--------------------------
|
||
|
|
||
|
By default all field and argument names (that are not
|
||
|
explicitly set with the ``name`` arg) will be converted from
|
||
|
`snake_case` to `camelCase` (`as the API is usually being consumed by a js/mobile client`)
|
||
|
|
||
|
So, for example if we have the following ObjectType
|
||
|
|
||
|
.. code:: python
|
||
|
|
||
|
class Person(graphene.ObjectType):
|
||
|
last_name = graphene.String()
|
||
|
other_name = graphene.String(name='_other_Name')
|
||
|
|
||
|
Then the ``last_name`` field name is converted to ``lastName``.
|
||
|
|
||
|
In the case we don't want to apply any transformation, we can specify
|
||
|
the field name with the ``name`` argument. So ``other_name`` field name
|
||
|
would be converted to ``_other_Name`` (without any other transformation).
|
||
|
|
||
|
So, you would need to query with:
|
||
|
|
||
|
.. code:: graphql
|
||
|
|
||
|
{
|
||
|
lastName
|
||
|
_other_Name
|
||
|
}
|
||
|
|
||
|
|
||
|
If you want to disable this behavior, you set use the ``auto_camelcase`` argument
|
||
|
to ``False`` when you create the Schema.
|
||
|
|
||
|
.. code:: python
|
||
|
|
||
|
my_schema = Schema(
|
||
|
query=MyRootQuery,
|
||
|
auto_camelcase=False,
|
||
|
)
|