0

context在传递给解析器函数之前如何修改它的内容?

4

1 回答 1

3

查看特殊 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'}
于 2020-03-28T10:08:51.673 回答