|
对于最新的稳定版本,请使用Spring GraphQL 2.0.2! |
代码生成
您可以使用如下的工具从GraphQL模式生成Java类型:
DGS Code Generation。以下可以生成的内容包括:
-
客户端类型(例如查询、突变)输入类型和响应选择类型。
-
GraphQL模式类型对应的数据类型。
代码生成可能不适合您的应用程序的数据类型,特别是如果您希望在其中添加逻辑。然而,代码生成对于客户端类型来说是一个很好的选择,因为它们定义了请求,并不需要其他逻辑。作为客户端,您也可以选择生成响应的数据类型。
客户端生成的类型可以与Spring的GraphQlClient一起使用。首先,按照DGS代码生成插件的说明生成客户端API类型。然后,给定一个如下的模式:
type Query {
books: [Book]
}
type Book {
id: ID
name: String
}
DGS Codegen生成BooksGraphQLQuery和BooksProjectionRoot,你可以使用这些值通过HTTP(或任何支持的传输方式)与GraphQlClient进行交互,如下所示:
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项目。