[英]Is there a way to group GraphQL query fields into sub/nested query groups?
我正在使用 GraphQL-Java,我是 GraphQL 的新手。
我正在尝试找到一种方法来组织我的 API,就像在GraphQL Hub中一样
本质上,我想将我的 RootQuery 作为入口点(如 GraphQL Hub 中的 GraphQLHubAPI),然后是 GraphQL Hub 中的子组,如 Reddit、Github 等)
我对 RedditAPI 应该是什么以及我应该如何为它进行连接感到困惑。 如果这是一个对象类型,它需要一个 DataFetcher 或某种方式来解析请求。 在他们的架构中,他们将其公开为QueryObjectType (使用 JS)
如何使用 GraphQL-Java 复制相同的结构?
你能做的就是返回一个新的对象。 由于默认的 PropertyDataFetcher 不会在对象上找到字段,因此它将移动到您的字段上声明的 DataFetcher:
RuntimeWiring.newRuntimeWiring()
.type(newTypeWiring("RootQuery")
.dataFetcher("RedditAPI", (environment) -> new Object())
)
.type(newTypeWiring("RedditAPI")
.dataFetcher("users", usersDataFetcher)
.dataFetcher("subreddits", subredditsDataFetcher)
)
.build();
所以显然答案是使用数据获取器为“子组”对象返回一个虚拟对象。 这将创建到您的叶子的“路径”。 你可以处理接线中的叶子
例如,对于 Reddit 场景,您可以使用这样的模式
schema {
query: RootQuery
}
type RootQuery {
RedditAPI: RedditAPI
}
type RedditAPI {
users: [Users]
subreddits(name: String!): [subreddit]
}
然后像这样连接起来
RuntimeWiring.newRuntimeWiring()
.type(newTypeWiring("RootQuery")
.dataFetcher("RedditAPI", new DataFetcher() {
@Override
public Object get(DataFetchingEnvironment dataFetchingEnvironment) {
return RedditAPI.newBuilder().build();
}
})
)
.type(newTypeWiring("RedditAPI")
.dataFetcher("users", usersDataFetcher)
.dataFetcher("subreddits", subredditsDataFetcher)
)
.build();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.