[英]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.