GraphQL- java с Spring - резольверы vd datafetcher - PullRequest
0 голосов
/ 08 апреля 2020

Существует полный беспорядок с GraphQL и Java (Spring). Существует несколько проектов и несколько примеров, но они абсолютно несовместимы.

Я понимаю, что Spring Boot должен дать рабочее решение OOTB, и (в некоторой степени) оно работает следующим образом. Проект, который дает вам такой опыт, находится на Github https://github.com/graphql-java-kickstart. В частности, https://github.com/graphql-java-kickstart/graphql-spring-boot дает вам возможность создавать схемы, создавать распознаватель, а все остальное выполняется автоматически.

Проблема в том, что вы пытаетесь заменить преобразователь - который выглядит очень просто сборщиком данных - на пользовательский datafetcher. Как я знаю, нет никакой возможности создать асинхронный или пакетный преобразователь - вам нужно сделать datafetcher.

Чтобы создать пользовательские сборщики данных, нужно сделать собственную проводку et c, заменив решение для весенней загрузки, или используя это как-то (как?). Там нет единой точки истины, как это сделать правильно. Я даже обнаружил, что BatchedDataFetcher не рекомендуется (!), Прежде чем они даже получат хорошую поддержку / пример Spring Boot (см .: GraphQL Java: Использование @Batched DataFetcher )

Из-за этого я даже не знаю, где искать решение. Я хотел бы видеть пример, который имеет:

  • Поддержка Spring Boot
  • асинхронный / параллельный сборщик данных
  • пакетный сборщик данных
  • подключение нескольких сервисов к конечным точкам GraphQL (возможно, вне области)
  • разбиение на страницы / фильтрация

Ответы [ 3 ]

3 голосов
/ 11 апреля 2020

В любом случае, ответ таков: используйте graphql- java -kickstart проекты, так как проекты из https://www.graphql-java.com/ устарели. Этот факт очень вводит в заблуждение и должен быть где-то изложен.

Не совсем. graphql-java - это только GraphQL java реализация, которую я знаю до сих пор. Он определяет DataFetcher. Это базовая библиотека, в то время как другие проекты, которые вы найдете, такие как java-kickstart (или, точнее, ее graphql-java-tool), построены поверх graphql-java, и она определяет свою собственную реализацию DataFetcher, которая называется Resolver.

В конце концов, Resolver это просто DataFetcher.

Более подробную информацию об этих двух проектах вы можете найти в этом сообщении в блоге .

Поэтому, если вы хотите иметь наибольшую гибкость при построении сервера GraphQL, используйте graphql-java. С другой стороны, если вам нравится самоуверенный способ, которым пользуется graphql-java-tool, используйте его.

0 голосов
/ 21 апреля 2020

Я согласен с беспорядком. Мне было трудно понять, что.

Особенно проводка во время выполнения.

К вашему сведению, я создал плагин, который очень помогает при построении сервера GraphQL на основе graphql- java. Это плагины maven и gradle, которые генерируют весь шаблонный код и скрывают сложность graphql- java. Как только код сгенерирован, вы можете просто избавиться от плагина, если хотите. И у вас будет пример использования grahql- java в режиме пружинной загрузки.

https://github.com/graphql-java-generator/graphql-maven-plugin-project

https://github.com/graphql-java-generator/graphql-gradle-plugin-project

Эти плагины показывают AFAIK хороший способ реализации сервера GraphQL с graphql- java.

Вы можете сгенерировать код с помощью плагина и просмотреть результат в качестве примера. Вы можете использовать повторно. Или оставьте плагин в своем проекте.

Этьен

0 голосов
/ 10 апреля 2020

Мой вопрос был вызван двумя разными фреймворками, которые работают с graphql- java. Через несколько дней я знаю, что дни сборщиков данных прошли (что повышается до https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/).

Теперь, если вы хотите просто go, вы можете сделать преобразователи, и все готово: https://github.com/graphql-java-kickstart Если вы хотите go глубже, вы должны сделать загрузчики данных: https://github.com/graphql-java/java-dataloader

В любом случае, ответ таков: используйте graphql- java -kickstart проекты, так как проекты из https://www.graphql-java.com/ устарели. Этот факт вводит в заблуждение и должен быть где-то изложен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...