Измените контекст в Ариадне перед резолверами

Как изменить содержание context до того, как он будет передан функциям распознавателя?

1 ответ

Решение

Ознакомьтесь с документацией по специальному типу Ariadne ContextValue.

Класс GraphQL принимает аргумент ключевого словаcontext_value. Он может быть любого типа и будет установлен как контекст.

Если вызываемый объект передан, он будет вызываться с request как аргумент.

Так:

  1. Создайте функцию для создания желаемого контекста

    def get_context_value(request):
        return {'request': request, 'test': "TEST"}
    
  2. Передайте функцию при инициализации GraphQL:

    app = GraphQL(
        schema,
        context_value=get_context_value,
        debug=True,
    )
    

Значение контекста внутри преобразователей:

{'request': <starlette.requests.Request object at 0x7fc363dbf370>, 'test': 'TEST'}
Другие вопросы по тегам