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. Callnext
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'
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:
result = schema.execute('THE QUERY', middleware=[AuthorizationMiddleware()])