python 在Flask请求中为Graphene选择正确的模式

6kkfgxo0  于 2023-01-29  发布在  Python
关注(0)|答案(1)|浏览(136)

我有一个Flask GraphQL端点,如下所示:

app.add_url_rule('/graphql', view_func=GraphQLView.as_view(
    'graphql',
    schema=schema,
    graphiql=True,
))

我目前有三种不同的模式。据我所知,GraphQL和REST之间的一个区别是,在GraphQL中,你只需要定义一个基本端点。然后,后端处理的发生取决于哪个模式应用于从前端接收到的数据。但我不确定这个端点最终将如何基于请求主体选择正确的模式。欢迎提供任何指导或链接到好的示例。我使用Graphene作为GraphQL的库。
PS:这是我第一次使用GraphQL,所以,如果我上面的理解是不正确的,对不起。

zpqajqem

zpqajqem1#

"嘿"
GraphQL的工作方式是客户端向端点发送一个查询/变更,然后使用模式来确定请求/变更哪些数据。有几种不同的方法可以实现这一点。
1.你可以使用schema指令来表示一个给定的查询或转换应该使用哪个schema,这将允许你在你的GraphQL查询或转换中指定一个"schema"参数,GraphQL服务器将使用这个参数来决定使用哪个schema。
1.你也可以使用一个自定义的GraphQLresolver来决定应该使用哪个模式,这可以通过查看查询或变异本身来完成,也可以通过查看请求主体中的数据来完成。
1.最后,您还可以使用一个定制的GraphQL中间件。这将允许您检查请求并执行一些定制逻辑来确定应该使用哪个模式。

    • 一旦**您设置了ResolverMap,您可以在GraphQLView上设置它,如下所示:
app.add_url_rule('/graphql', view_func=GraphQLView.as_view(
    'graphql',
    schema=schema,
    graphiql=True,
    resolver_map=resolver_map
))

这应允许您的应用将请求正确路由到适当的架构。
祝你好运,希望这有帮助!

相关问题