Update section on codegen
See gh-848
This commit is contained in:
@@ -9,16 +9,13 @@ You can use tools such as
|
|||||||
https://netflix.github.io/dgs/generating-code-from-schema/[DGS Code Generation] to generate
|
https://netflix.github.io/dgs/generating-code-from-schema/[DGS Code Generation] to generate
|
||||||
Java types from the GraphQL schema. The following can be generated:
|
Java types from the GraphQL schema. The following can be generated:
|
||||||
|
|
||||||
1. Client types for requests (e.g. queries, mutations) input types, and other types to
|
1. Client types for requests (e.g. queries, mutations) input types, and response selection types.
|
||||||
express the response selection set.
|
2. Data types corresponding to GraphQL schema types.
|
||||||
2. Data types.
|
|
||||||
3. Server handling classes (e.g. controllers).
|
|
||||||
|
|
||||||
Code generation provides convenience initially, but is not ideal for your own application
|
Code generation may not be ideal for your own application's data types especially if you
|
||||||
domain types over which you'll typically want control. For client types, however, code
|
want to add logic to them. Code generation, however, is a good fit for client types since
|
||||||
generation can be very useful since you typically don't need to manually change generated
|
those define the request, and don't need to have other logic. As a client, you may also
|
||||||
request types, input types, and selection set types. Response types could be imported,
|
choose to generate the data types for the response.
|
||||||
if you have access to them, or otherwise could also be generated.
|
|
||||||
|
|
||||||
Client generated types can be used with Spring's `GraphQlClient`. Start by following the
|
Client generated types can be used with Spring's `GraphQlClient`. Start by following the
|
||||||
instructions for the DGS code generation plugin to generate client API types. Then, given
|
instructions for the DGS code generation plugin to generate client API types. Then, given
|
||||||
@@ -36,9 +33,8 @@ a schema like this:
|
|||||||
}
|
}
|
||||||
----
|
----
|
||||||
|
|
||||||
DGS Codegen will generate a `BooksGraphQLQuery` and `BooksProjectionRoot` classes.
|
DGS Codegen generates `BooksGraphQLQuery` and `BooksProjectionRoot` that you can use with
|
||||||
You can then use those with Spring's `GraphQlClient` along with your own `Book` class
|
`GraphQlClient` over HTTP (or any supported transport) as follows:
|
||||||
for the response:
|
|
||||||
|
|
||||||
[source,java,indent=0,subs="verbatim,quotes"]
|
[source,java,indent=0,subs="verbatim,quotes"]
|
||||||
----
|
----
|
||||||
@@ -50,10 +46,12 @@ for the response:
|
|||||||
|
|
||||||
List<Book> books = client.document(document)
|
List<Book> books = client.document(document)
|
||||||
.retrieve(query.getOperationName())
|
.retrieve(query.getOperationName())
|
||||||
.toEntityList(Book.class)
|
.toEntityList(Book.class) // possibly also generated or imported if available
|
||||||
.block();
|
.block();
|
||||||
----
|
----
|
||||||
|
|
||||||
NOTE: Spring Initializer at https://start.spring.io is scheduled to add support for the DGS
|
TIP: We intend to further simplify the above code in
|
||||||
Code Generation with Gradle and Maven. See
|
https://github.com/spring-projects/spring-graphql/issues/846[spring-graphql#846].
|
||||||
https://github.com/spring-io/start.spring.io/pull/1348[start.spring.io#1348].
|
|
||||||
|
You can use Spring Initializer at https://start.spring.io to create a Spring project with
|
||||||
|
the DGS Code Generation Gradle or Maven plugin.
|
||||||
Reference in New Issue
Block a user