最新の安定バージョンについては、Spring GraphQL 1.3.1 を使用してください!

コード生成

DGS コードの生成 (英語) などのツールを使用して、GraphQL スキーマから Java 型を生成できます。次のものを生成できます。

  1. リクエストのクライアント型 (クエリ、ミューテーションなど) 入力型、およびレスポンス選択型。

  2. GraphQL スキーマ型に対応するデータ型。

コード生成は、独自のアプリケーションのデータ型にとって、特にロジックを追加する場合には理想的ではない可能性があります。ただし、コード生成は、クライアント型がリクエストを定義し、他のロジックを必要としないため、クライアント型に適しています。クライアントとして、レスポンスのデータ型を生成することも選択できます。

クライアント生成型は Spring の GraphQlClient で使用できます。まず、DGS コード生成プラグインの指示に従ってクライアント API 型を生成します。次に、次のようなスキーマがあるとします。

type Query {
    books: [Book]
}

type Book {
    id: ID
    name: String
}

DGS Codegen は、次のように、HTTP (またはサポートされているトランスポート) 経由で GraphQlClient とともに使用できる BooksGraphQLQuery および BooksProjectionRoot を生成します。

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 [GitHub] (英語) では、上記のコードをさらに簡素化する予定です。

start.spring.io で Spring イニシャライザーを使用して、DGS コード生成 Gradle または Maven プラグインで Spring プロジェクトを作成できます。