Как сгенерировать Java-клиент с помощью Apollo GraphQL?

Я пробовал шаги, упомянутые в официальном документе, но он показывает ошибку: Неподдерживаемая цель: java

В справке CLI java не указан в качестве цели

Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
6 621
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Настройка сервера

Весенняя загрузка с сервером GraphQL: https://www.graphql-java.com/tutorials/начало-с-весной-загрузкой/

Полный рабочий код сервера GraphQL доступен на GitHub: https://github.com/graphql-java/tutorials/tree/master/книга-детали

Клиент

Сгенерировать код запроса GraphQL из схемы

  • Создайте проект Java со следующим build.gradle
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.apollographql.apollo:apollo-gradle-plugin:0.5.0'
    }
}

plugins {
    id 'java'
}

apply plugin: 'com.apollographql.android'

group = 'com.graphql-java.tutorial'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    jcenter()
}

dependencies {
    compile group: 'com.apollographql.apollo', name: 'apollo-runtime', version: '0.5.0'
}
  • Создайте файл запроса GraphQL (BookById.graphQL), будет создан файл Java с таким же именем (ссылка: https://www.apollographql.com/docs/android/essentials/get-started.html#creating-graphql-файл)
  • Поместите файл BookById.graphQL в пакет main.graphql с ожидаемой иерархией пакетов. Пример: main/graphql/com/apollographql/apollo/sample/BookById.graphql;
  • Загрузите schema.json с конечной точки сервера GraphQL. Перейдите в CLI, запустите команду ниже, она сгенерирует schema.json

    apollo service:download --endpoint=http://localhost:8080/graphql

  • Поместите схема.json в основной/график

  • Запустите задачу сборки Gradle, она сгенерирует код клиентского запроса в Сборка/генерация/источник/аполлон с той же структурой пакета, что и BookById.graphql.

    BookByIdQuery.java

Использованная литература:

Сервер GraphQL-Java: https://www.graphql-java.com/documentation/master/

Клиент Аполлона: https://www.apollographql.com/docs/android/essentials/get-started.html

Spring Boot с примером запроса GraphQL | Технические основы: https://thewikihow.com/video_zX2I7-aIldE

«Создание API данных с помощью GraphQL и Spring» — API Craft Singapore: https://thewikihow.com/video_GmR2uIDZEyM

Что должен содержать BookById.graphQL? Я пробовал с query bookById($id: ID!) { book(id: $id) { id name pageCount author { lastName } } } и получаю: `bookquery.graphql (2:4) Не удается выполнить запрос book по типу Query -------------------------- -------------------------- [1]:query bookById($id: ID!) { [2]: book(id: $id ) { [3]: идентификатор ---------------------------------------------------------- --------- `

alampada 31.05.2020 19:10

При подходе «сначала код» элегантным решением для клиентов Java GraphQL является: vertx-graphql-клиент

Другие вопросы по теме