Skip to content

Latest commit

 

History

History
253 lines (187 loc) · 5.08 KB

File metadata and controls

253 lines (187 loc) · 5.08 KB

GraphQL

GraphQL using GraphQL Java library.

Usage

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

Java
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())
   );
}
Kotlin
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())
    )
}
  1. Install Jackson

  2. Install GraphQL, uses the schema.graphql and provide a RuntimeWiring

The GraphQL module generates a POST /graphql route.

Options

Async

The GraphQL Java library executes queries in async mode. To turn-off the async mode:

Async Mode
import io.jooby.json.Jackson2Module;
import io.jooby.graphql.GraphQLModule;

{
  install(new GraphQLModule(...)
      .setAsync(false)                    (1)
  );
}
Kotlin
import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule

{
  install(GraphQLModule(...)
      .setAsync(false)                    (1)
  )
}
  1. Set async false

Please refer to Asynchronous execution for more information.

Support HTTP Get

By default the module only install a HTTP POST route. If you want a HTTP GET:

HTTP GET
import io.jooby.json.Jackson2Module;
import io.jooby.graphql.GraphQLModule;

{
  install(new GraphQLModule(...)
      .setSupportHttpGet(true)
  );
}
Kotlin
import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule

{
  install(GraphQLModule(...)
      .setSupportHttpGet(true)
  )
}

Path

To change the default path: /graphql set the graphql.path property in your application configuration file.

IDE

Jooby comes with supports for two IDE:

They are provided as optional dependencies.

GraphIQL

1) Add the dependencies:

.

1) Install

Java
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)
}
Kotlin
import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule
import io.jooby.graphql.GraphiQLModule

{
  install(Jackson2Module())                (1)

  install(GraphQLModule(...))             (2)

  install(GraphiQLModule())               (3)
}
  1. Install Jackson

  2. Install GraphQL

  3. Install GraphiQL

GraphiQL should be up and running at /graphql.

GraphQL Playground

1) Add the dependencies:

.

1) Install

Java
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)
}
Kotlin
import io.jooby.json.Jackson2Module
import io.jooby.graphql.GraphQLModule
import io.jooby.graphql.GraphQLPlaygroundModule

{
  install(Jackson2Module())                         (1)

  install(GraphQLModule(...))                      (2)

  install(GraphQLPlaygroundModule())               (3)
}
  1. Install Jackson

  2. Install GraphQL

  3. Install GraphQL Playground

GraphQL Playground should be up and running at /graphql.