Added middleware docs

This commit is contained in:
Syrus Akbary 2016-10-31 05:32:00 +01:00
parent 9a3d84319d
commit adfbffb267
3 changed files with 53 additions and 0 deletions

8
docs/execution/index.rst Normal file
View File

@ -0,0 +1,8 @@
=========
Execution
=========
.. toctree::
:maxdepth: 1
middleware

View File

@ -0,0 +1,44 @@
Middleware
==========
You can use ``middleware`` to affect the evaluation of fields in your schema.
A middleware is any object that responds to ``resolve(*args, next_middleware)``.
Inside that method, it should either:
- Send ``resolve`` to the next middleware to continue the evaluation; or
- Return a value to end the evaluation early.
Resolve arguments
-----------------
Middlewares ``resolve`` is invoked with several arguments:
- ``next`` represents the execution chain. Call ``next`` to continue evalution.
- ``root`` is the root value object passed throughout the query.
- ``args`` is the hash of arguments passed to the field.
- ``context`` is the context object passed throughout the query.
- ``info`` is the resolver info.
Example
-------
This middleware only continues evaluation if the ``field_name`` is not ``'user'``
.. code:: python
class AuthorizationMiddleware(object):
def resolve(self, next, root, args, context, info):
if info.field_name == 'user':
return None
return next(root, args, context, info)
And then execute it with:
.. code:: python
result = schema.execute('THE QUERY', middleware=[AuthorizationMiddleware()])

View File

@ -8,6 +8,7 @@ Contents:
quickstart
types/index
execution/index
relay/index
Integrations