Middleware¶
Вы можете использоватьmiddleware
для того, чтобы повлиять на вычисление полей в Вашей схеме.
Middleware
это любой объект, который отвечает наresolve(*args,next_middleware)
.
Внутри этого метода он должен либо:
- Отправить
resolve
в следующуюmiddleware
для продолжения вычислений; либо: - Завершить вычисления и вернуть значение.
Резолв аргументов¶
Метод resolve
вызывается с несколькими аргументами:
next
представляет запуск цепочки. Вызовитеnext
для продолжения вычислений.root
это объект, переданный через запрос.info
is это объект Graphene, содержащий информацию оresolver
.args
это хэш аргументов, переданных в поле.
Пример¶
Эта middleware продолжает вычисления только в случае, если field_name
не равно 'user'
:
class AuthorizationMiddleware(object):
def resolve(self, next, root, info, **args):
if info.field_name == 'user':
return None
return next(root, info, **args)
Попробуйте выполнить с ее помощью:
result = schema.execute('THE QUERY', middleware=[AuthorizationMiddleware()])