GraphQL using GraphQL Java library.
1) Add the dependency:
.
2) Creates schema.graphql inside the src/main/resource
type Query {
bookById(id: ID): Book
}
type Book {
id: ID
name: String
pageCount: Int
author: Author
}
type Author {
id: ID
firstName: String
lastName: String
}3) Install Jackson and GraphQL
import io.jooby.json.Jackson2Module;
import io.jooby.graphql.GraphQLModule;
{
install(new Jackson2Module()); (1)
install(new GraphQLModule(
RuntimeWiring.newRuntimeWiring() (2)
.type(newTypeWiring("Query")
.dataFetcher("bookById", fetchers.getBookByIdDataFetcher()))
.type(newTypeWiring("Book")
.dataFetcher("author", fetchers.getAuthorDataFetcher()))
.build())
);
}import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule
{
install(Jackson2Module()) (1)
install(GraphQLModule(
RuntimeWiring.newRuntimeWiring() (2)
.type(newTypeWiring("Query")
.dataFetcher("bookById", fetchers.getBookByIdDataFetcher()))
.type(newTypeWiring("Book")
.dataFetcher("author", fetchers.getAuthorDataFetcher()))
.build())
)
}-
Install Jackson
-
Install GraphQL, uses the
schema.graphqland provide aRuntimeWiring
The GraphQL module generates a POST /graphql route.
The GraphQL Java library executes queries in async mode. To turn-off the async mode:
import io.jooby.json.Jackson2Module;
import io.jooby.graphql.GraphQLModule;
{
install(new GraphQLModule(...)
.setAsync(false) (1)
);
}import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule
{
install(GraphQLModule(...)
.setAsync(false) (1)
)
}-
Set async false
Please refer to Asynchronous execution for more information.
By default the module only install a HTTP POST route. If you want a HTTP GET:
import io.jooby.json.Jackson2Module;
import io.jooby.graphql.GraphQLModule;
{
install(new GraphQLModule(...)
.setSupportHttpGet(true)
);
}import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule
{
install(GraphQLModule(...)
.setSupportHttpGet(true)
)
}Jooby comes with supports for two IDE:
They are provided as optional dependencies.
1) Add the dependencies:
.
1) Install
import io.jooby.json.Jackson2Module;
import io.jooby.graphql.GraphQLModule;
import io.jooby.graphql.GraphiQLModule;
{
install(new Jackson2Module()); (1)
install(new GraphQLModule(...)); (2)
install(new GraphiQLModule()); (3)
}import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule
import io.jooby.graphql.GraphiQLModule
{
install(Jackson2Module()) (1)
install(GraphQLModule(...)) (2)
install(GraphiQLModule()) (3)
}-
Install Jackson
-
Install GraphQL
-
Install GraphiQL
GraphiQL should be up and running at /graphql.
1) Add the dependencies:
.
1) Install
import io.jooby.json.Jackson2Module;
import io.jooby.graphql.GraphQLModule;
import io.jooby.graphql.GraphQLPlaygroundModule;
{
install(new Jackson2Module()); (1)
install(new GraphQLModule(...)); (2)
install(new GraphQLPlaygroundModule()); (3)
}import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule
import io.jooby.graphql.GraphQLPlaygroundModule
{
install(Jackson2Module()) (1)
install(GraphQLModule(...)) (2)
install(GraphQLPlaygroundModule()) (3)
}-
Install Jackson
-
Install GraphQL
-
Install GraphQL Playground
GraphQL Playground should be up and running at /graphql.