Improved docs. Added schema page

This commit is contained in:
Syrus Akbary 2016-09-21 01:16:35 -07:00
parent d8eeb65b5c
commit 316569b019
4 changed files with 85 additions and 0 deletions

View File

@ -10,4 +10,5 @@ Types Reference
interfaces interfaces
abstracttypes abstracttypes
objecttypes objecttypes
schema
mutations mutations

View File

@ -5,6 +5,7 @@ An Interface contains the essential fields that will be implemented among
multiple ObjectTypes. multiple ObjectTypes.
The basics: The basics:
- Each Interface is a Python class that inherits from ``graphene.Interface``. - Each Interface is a Python class that inherits from ``graphene.Interface``.
- Each attribute of the Interface represents a GraphQL field. - Each attribute of the Interface represents a GraphQL field.

View File

@ -2,6 +2,7 @@ Scalars
======= =======
Graphene define the following base Scalar Types: Graphene define the following base Scalar Types:
- ``graphene.String`` - ``graphene.String``
- ``graphene.Int`` - ``graphene.Int``
- ``graphene.Float`` - ``graphene.Float``
@ -9,6 +10,7 @@ Graphene define the following base Scalar Types:
- ``graphene.ID`` - ``graphene.ID``
Graphene also provides custom scalars for Dates and JSON: Graphene also provides custom scalars for Dates and JSON:
- ``graphene.types.datetime.DateTime`` - ``graphene.types.datetime.DateTime``
- ``graphene.types.json.JSONString`` - ``graphene.types.json.JSONString``

81
docs/types/schema.rst Normal file
View File

@ -0,0 +1,81 @@
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,
)