如何在石墨烯解析器后使用中间件?

Posted

技术标签:

【中文标题】如何在石墨烯解析器后使用中间件?【英文标题】:How to use middleware after resolver in graphene? 【发布时间】:2020-06-29 14:36:16 【问题描述】:

在 Node 中使用 Graphql,您可以在解析器 BEFOREAFTER 使用中间件,例如使用Prisma。

在 Python 中,使用Graphene,我只能找到一种在解析器之前使用中间件的方法。

有没有办法在 Python 中解析器之后使用中间件?

【问题讨论】:

【参考方案1】:

怎么样:

class SomeMiddleware(object):
    def resolve(self, next, root, info, **args):
        next_node = next(root, info, **args)
        ...logic...
        return next_node

【讨论】:

谢谢!你知道我能否得到石墨烯返回的答案吗?还是只有获取的数据可用? 答案,和中间件解析器返回的值一样? 不,石墨烯返回的答案。如果我问city id 并且解析器返回city: id: 1, name: 'ny',我怎样才能只得到city: id: 1 的响应?我正在尝试创建一个中间件来记录请求/响应。 哦!可以?我的印象是石墨烯不会打扰解析尚未请求的字段。石墨烯处理完请求后中间件会触发,所以这个响应肯定会转发给客户端,但这不是石墨烯的工作原理!你确定吗? 是的。解析器不知道问了什么。所以它会用完整的数据来响应。然后,石墨烯映射数据并删除未询问的内容。但是我不知道如何得到最终的响应,数据已经被剥离了。

以上是关于如何在石墨烯解析器后使用中间件?的主要内容,如果未能解决你的问题,请参考以下文章

将 json 转换为石墨烯 graphql 响应

将json转换为石墨烯graphql响应

如何允许石墨烯GraphQl中的任何字段过滤

如何解决具有多对多关系的石墨烯 django 节点字段

在石墨烯中使用与多个解析器相同的连接

如何在石墨烯中将函数作为查询结果返回?