簡體   English   中英

有沒有辦法將 GraphQL 查詢字段分組到子/嵌套查詢組中?

[英]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 等)

在 RootQuery 內部

RedditAPI 內部

我對 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM