如何使用 Apollo GraphQL 生成 java 客户端?

How to generate java client using Apollo GraphQL?

我尝试了官方文档中提到的步骤,但它显示错误:不支持的目标:java

在 CLI 帮助中,java 未列为目标

服务器设置

Spring 使用 GraphQL 服务器启动:https://www.graphql-java.com/tutorials/getting-started-with-spring-boot/

GitHub 上存在完整的 GraphQL 服务器代码:https://github.com/graphql-java/tutorials/tree/master/book-details

客户端

从模式生成 GraphQL 查询代码

  • 使用以下 build.gradle
  • 创建 Java 项目
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),将生成相同的namedjava文件(参考:https://www.apollographql.com/docs/android/essentials/get-started.html#creating-graphql-file
  • 将 BookById.graphQL 文件放入具有预期包层次结构的 main.graphql 包中 示例:main/graphql/com/apollographql/apollo/sample/BookById.graphql;
  • 下载schema.jsonfromthe GraphQL 服务器端点 转到 CLI,运行 下面的命令,它将生成 schema.json

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

  • schema.json放入main/graphql

  • 运行 Gradle 构建任务,它将在 Build/generated/source/apollo 中生成客户端查询代码,其包结构与BookById.graphql

    BookByIdQuery.java

参考文献:

服务器 GraphQL-Java:https://www.graphql-java.com/documentation/master/

Apollo 客户端:https://www.apollographql.com/docs/android/essentials/get-started.html

Spring 使用 GraphQL 查询示例启动 |技术入门:https://youtu.be/zX2I7-aIldE

"Building a data API with GraphQL and Spring" - API 新加坡工艺品:https://youtu.be/GmR2uIDZEyM

使用代码优先方法,Java GraphQL 客户端的优雅解决方案是:vertx-graphql-client