Skip to content

graphql-java-kickstart/graphql-spring-webclient

This branch is 1 commit ahead of master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b08101a · May 22, 2025
Nov 29, 2023
Dec 7, 2023
Oct 26, 2023
Mar 26, 2020
Dec 18, 2023
Mar 26, 2020
Mar 26, 2020
Oct 18, 2024
Oct 4, 2023
Dec 14, 2022
May 22, 2025
Oct 4, 2023
Nov 25, 2022
Mar 26, 2020
Dec 24, 2020
May 11, 2021
Mar 26, 2020

Repository files navigation

GraphQL Spring Webclient

Maven Central Publish snapshot Quality Gate Status GitHub contributors Discuss on GitHub

Reactive GraphQL client for consuming GraphQL APIs from a Spring Boot application. Provides OAuth2 authorization through configuration.

Getting started

Add the starter to your project.

When using Maven:

<dependency>
  <groupId>com.graphql-java-kickstart</groupId>
  <artifactId>graphql-webclient-spring-boot-starter</artifactId>
  <version>2.0.0</version>
</dependency>

When using gradle:

implementation "com.graphql-java-kickstart:graphql-webclient-spring-boot-starter:2.0.0"

Configure at least the URL of the GraphQL API to consume:

graphql:
  client:
    url: https://graphql.github.com/graphql

The starter creates a Spring bean of type GraphQLWebClient that you can use in your classes to send queries. A simplified example might look like this:

@Component
class MyClass {
  
  private final GraphQLWebClient graphQLWebClient;
  
  MyClass(GraphQLWebClient graphQLWebClient) {
    this.graphQLWebClient = graphQLWebClient;
  }
  
  String helloWorld() {
    GraphQLRequest request = GraphQLRequest.builder().query("query { hello }").build();
    GraphQLResponse response = graphQLWebClient.post(request).block();
    return response.get("hello", String.class);
  }
}

Using latest Snapshots

You can use the latest Snapshots by configuring the Snapshot repository, see https://graphql-java-kickstart.github.io/servlet/#using-the-latest-development-build.

Configuration

The following tables list the configurable properties of the GraphQL Spring Webclient and their default values. These properties are configured with the prefix graphql.client, e.g. the property listed in the table as url should be defined as graphql.client.url in your Spring Boot configuration files.

Property Description
url Full URL of the GraphQL API to connect to, e.g. https://graphql.github.com/graphql
oauth2.client-id OAuth2 client id
oauth2.client-secret OAuth2 client secret
oauth2.token-uri Token URI of the identity provider
oauth2.authorization-grant-type By default the grant type client_credentials is used
retry.strategy The retry strategy to auto configure for the WebClient (possible values are none, backoff, fixed_delay, indefinitely, max and max_in_row). Default is none.
retry.backoff.max-attempts The maximum number of retry attempts to allow (only used when retry.strategy = backoff).
retry.backoff.min-backoff The minimum duration for the first backoff (only used when retry.strategy = backoff). Default is 0.
retry.backoff.max-backoff The maximum duration for the exponential backoffs (only used when retry.strategy = backoff). Default is Duration.ofMillis(Long.MAX_VALUE).
retry.fixed-delay.max-attempts The maximum number of retry attempts to allow (only used when retry.strategy = fixed_delay).
retry.fixed-delay.delay The duration of the fixed delays between attempts (only used when retry.strategy = fixed_delay).
retry.max.max-attempts The maximum number of retry attempts to allow (only used when retry.strategy = max).
retry.max-in-row.max-attempts The maximum number of retry attempts to allow in a row (only used when retry.strategy = max_in_row).

Max in memory size

In case you need to work with large responses you might run into the following error:

Exceeded limit on max bytes to buffer : 262144

In that case starting with version 0.1.2 you can use the default Spring Boot configuration property to configure the max in memory size to use:

spring.codec.max-in-memory-size=10MB

About

Reactive GraphQL client for consuming GraphQL APIs from a Spring Boot application.

Resources

License

Stars

Watchers

Forks

Packages

No packages published