Hey guys in this post, we will discuss passing JSON data to the GraphQL query with Spring Boot Example
Table of Contents
Complete example
Let’s create a step-by-step spring boot project and pass JSON data to GraphQL query
Read More:
- Check the complete GraphQL and Spring Boot Tutorials
- Check the complete Spring Boot Data JPA Tutorials
Create spring boot project
There are many different ways to create a spring boot application, you can follow the below articles to create one –
>> Create spring boot application using Spring initializer
>> Create spring boot application in Spring tool suite [STS]
>> Create spring boot application in IntelliJ IDEA
Add maven dependencies
Open pom.xml and add the following dependencies –
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>in.bushansirgur</groupId>
<artifactId>springbootgraphql</artifactId>
<version>v1</version>
<name>springbootgraphql</name>
<description>Spring data jpa</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphiql-spring-boot-starter</artifactId>
<version>5.0.2</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>5.2.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
spring-boot-starter-web dependency for building web applications using Spring MVC. It uses the tomcat as the default embedded container.
graphql-spring-boot-starter dependency is the starter dependency for GraphQL and spring boot. graphiql-spring-boot-starter dependency provides the interface to test GraphQL queries. graphql-java-tools dependency helps us to scan the graphql files having the extension .graphqls
Create a Request class
Create SampleRequest.java inside the in.bushansirgur.springboot.model package and add the following content
package in.bushansirgur.springboot.model;
public class SampleRequest {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
This class is a simple POJO class, contains private fields, setters, getters and toString().
Create a service class
Create Home.java inside the in.bushansirgur.springboot.resolver package and add the following content
package in.bushansirgur.springboot.resolver;
import org.springframework.stereotype.Service;
import com.coxautodev.graphql.tools.GraphQLQueryResolver;
import in.bushansirgur.springboot.model.SampleRequest;
@Service
public class Home implements GraphQLQueryResolver{
public String fullName(SampleRequest sRequest) {
return sRequest.getFirstName() + " " + sRequest.getLastName();
}
}
Resolver method fullName() takes the argument of type SampleRequest.
Create a schema
Create home.graphqls file inside the schema folder and place it inside the resources folder
Note: filename and folder doesn’t matter here you can create with any file name and folder but it should have the extension
.graphqls
type Query {
fullName(sampleRequest: SampleRequest): String
}
input SampleRequest {
firstName: String,
lastName: String
}
We also need to provide the fields for the type SampleRequest, this will be of input type because the type SampleRequest is an input to the fullName() query.
Run the app
Run the application using the below maven command –
mvn spring-boot:run
Open the Altair plugin in chrome and execute the following query-

