在解析器之前修改Ariadne中的上下文

时间:2020-03-28 10:08:51

标签: python graphql ariadne-graphql

如何在context的内容传递给解析器功能之前进行修改?

1 个答案:

答案 0 :(得分:0)

查看特殊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'}