Есть ли способ сгруппировать поля запросов GraphQL в под / вложенные группы запросов? - PullRequest
0 голосов
/ 11 апреля 2019

Я использую GraphQL-Java, и я новичок в GraphQL.

Я пытаюсь найти способ организовать мой API таким же образом, как это делается в GraphQL Hub

По сути, я хочу иметь мой RootQuery в качестве точки входа (например, GraphQLHubAPI в GraphQL Hub), а затем подгруппы, такие как Reddit, Github и т. Д. В GraphQL Hub)

Inside the RootQuery

Inside RedditAPI

Я не совсем понимаю, каким должен быть RedditAPI и как я должен сделать для него проводку. Если это Тип объекта, для его обработки требуется DataFetcher или какой-либо способ. В своих схемах они представляют его как QueryObjectType (с использованием JS)

Как мне повторить ту же структуру, используя GraphQL-Java?

1 Ответ

0 голосов
/ 12 апреля 2019

Таким образом, очевидно, ответ заключается в использовании средства извлечения данных, которое возвращает фиктивный объект для объектов «подгруппы». Это создает «путь» к вашим листьям. И вы можете обращаться с листьями в проводке

Например, для сценария 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();
...