SPQR GraphQL中的持久查询

时间:2019-01-14 17:20:07

标签: java graphql-spqr

GraphQL-SPQR是否支持PersistedQueries(如果没有) 在SPQR中处理持久查询的建议方法是什么。

1 个答案:

答案 0 :(得分:0)

我想您在这里指的是SPQR Spring Starter。当前没有内置此功能。我相信只有Apollo Engine(Link?)可以。但是您应该可以在任何GraphQL服务器上使用它。

阿波罗博客上的post说:

  

自动持久查询-使用Apollo时的内置功能   链接和引擎,可与任何客户端或服务器一起使用

因此,您可以将基于SPQR的服务器置于Apollo Engine的后面,并获得其提供的此功能和其他功能。

您还可以自己轻松地实现此特定功能。 不幸的是,在SPQR Spring Starter的0.0.3版本中,您必须更换控制器。下一个版本(0.0.4)将会更容易扩展。

GraphQLController bean是这样创建的:

@Bean
@ConditionalOnProperty(name = "graphql.spqr.http.enabled", havingValue = "true", matchIfMissing = true)
@ConditionalOnBean(GraphQLSchema.class)
public GraphQLController graphQLController(GraphQL graphQL, GlobalContextFactory contextFactory) {
    return new GraphQLController(graphQL, contextFactory, dataLoaderRegistryFactory);
}

这意味着您可以通过将graphql.spqr.http.enabled=false添加到您的应用程序配置中来禁用它。 然后,您可以注册自己的控制器,该控制器可以扩展现有控制器并预处理请求。

同样,这不必要地复杂,并且将更容易在0.0.4中自定义(计划在几周内推出)。一旦0.0.4发布,我将更新此答案以例证新用法。