对于最新的稳定版本,请使用Spring GraphQL 2.0.2spring-doc.cadn.net.cn

代码生成

您可以使用如下的工具从GraphQL模式生成Java类型: DGS Code Generation。以下可以生成的内容包括:
spring-doc.cadn.net.cn

  1. 客户端类型(例如查询、突变)输入类型和响应选择类型。spring-doc.cadn.net.cn

  2. GraphQL模式类型对应的数据类型。spring-doc.cadn.net.cn

代码生成可能不适合您的应用程序的数据类型,特别是如果您希望在其中添加逻辑。然而,代码生成对于客户端类型来说是一个很好的选择,因为它们定义了请求,并不需要其他逻辑。作为客户端,您也可以选择生成响应的数据类型。spring-doc.cadn.net.cn

客户端生成的类型可以与Spring的GraphQlClient一起使用。首先,按照DGS代码生成插件的说明生成客户端API类型。然后,给定一个如下的模式:spring-doc.cadn.net.cn

type Query {
    books: [Book]
}

type Book {
    id: ID
    name: String
}

DGS Codegen生成BooksGraphQLQueryBooksProjectionRoot,你可以使用这些值通过HTTP(或任何支持的传输方式)与GraphQlClient进行交互,如下所示:spring-doc.cadn.net.cn

HttpGraphQlClient client =
        HttpGraphQlClient.create(WebClient.create("http://localhost:8080/graphql"));

BooksGraphQLQuery query = new BooksGraphQLQuery();
String document = new GraphQLQueryRequest(query, new BooksProjectionRoot<>().id().name()).serialize();

List<Book> books = client.document(document)
        .retrieve(query.getOperationName())
        .toEntityList(Book.class)  // possibly also generated or imported if available
        .block();
我们打算进一步简化上述代码,在 spring-graphql#846

您可以使用Spring Initializer在start.spring.io来创建一个带有DGS代码生成Gradle或Maven插件的Spring项目。spring-doc.cadn.net.cn