Working with GraphQL Query | Part1
Question :- What is GraphQL ?
Question :- What is the difference between the GraphQL and REST API ?
Question :- What are the dependencies required for GraphQL, while working with Java language ?
Question :- Demonstrate the simple example for Plain Query using GQL ?
Step #1.) We create a Query as shown below :-
Step #2.) We now create a schema file as shown below. Note that :-
- The name of the Query should be same as the name of the method in the GraphQLQueryResolver class.
- The return type of this GQL-Query also needs to be specified, which in this case is String.
Step #3.) We can now start this spring boot application and as a result, we get to see the UI as shown below :-
Question :- Demonstrate another simple example for another Query using GQL ?
Step #1.) We create a second Query as shown below :-
Step #2.) We now create a schema file as shown below. Note that :-
- The name of the Query should be same as the name of the method in the GraphQLQueryResolver class.
- The return type of this GQL-Query also needs to be specified, which in this case is String.
Step #3.) We can now restart this spring boot application and as a result, we get to see the UI as shown below :-
Step #4.) We can see the query option, which exists within our GQL :-
Step #5.) Upon clicking on the query, we can go inside the query, to see all possible query which we can use :-
Question :- Demonstrate the use of Altair Plugin ?
Answer → There also exists an Altair plugin into the chrome browser. We can access our GraphQL through this as well :-
Question :- Demonstrate another example for some new Query using GQL ?
Step #1.) We create a third Query as shown below with name as “fullName” :-
Step #2.) We now create a schema file as shown below. Note that :-
- The name of the Query should be same as the name of the method in the GraphQLQueryResolver class.
- The three parameters that this query takes-in, has also been shown as the parameters to this query in the schema file below.
- The return type of this GQL-Query also needs to be specified, which in this case is String.
Step #3.) We can now restart this spring boot application and as a result, we get to see the UI as shown below. Note that, all the possible query names are auto-suggested :-
Step #4.) We can now fire a request to this GQL query named “fullName” and get to see the result as shown below :-
Question :- Can we define a new object, which shall be passed as request in the GQL ?
Step #1.) We modified the above third Query as shown below with name as “fullName”. This query receives the object of type SampleRequest in the request :-
Step #2.) We can define the Object definition as below :-
Step #3.) We now create a schema file as shown below. Note that :-
- The name of the Query should be same as the name of the method in the GraphQLQueryResolver class.
- The one parameter (SampleRequest)that this query takes-in, has also been shown as the parameter to this query in the schema file below.
- The return type of this GQL-Query also needs to be specified, which in this case is String.
- Also, at line no. 7, we have defined the schema of this Object in the schema file.
Step #3.) We can now restart this spring boot application and as a result, we get to see the UI as shown below. Note that, all the possible query names are auto-suggested :-
Question :- What would happen, if we don’t supply one of the parameter in the GQL request ?
Question :- How can we make a particular parameter as a mandatory parameter ?
Answer → By putting the exclamatory symbol (!) behind the particular parameter.
Now, if we try to invoke this GQL, without this mandatory parameter (firstName), it shall throw us an error :-
Question :- How can we change the endpoint URL of our GQL application ?
So, now we can open the GraphQL UI at this address :-
And, we can also access the GraphQL application through Altair plugin :-
Question :- Demonstrate the full working of student-service through the GQL ?
Step #1.) We have following tables in our mysql database :-
- Table student →
- Table address →
- Table subject →
Step #2.) Let’s configure the mysql database into our application :-
Step #3.) Let’s add our dependencies, to use mysql along with SpringBoot application :-
Step #4.) Let’s define our repositories and service layer now :-
Step #5.) We would now declare the repository package into our components scan :-
Step #6.) We now create our fourth Query as shown below with name as “student”. This query receives the parameter of type long :-
Step #7.) This is how, we define the object of “StudentResponse” :-
Step #8.) We now declare the schema of this GQL :-
- At line no. 5, the name of the GQL Query is student.
- At line no. 13, we defined the response object of this GQL-Query.
- Note that, the fields are not mandatory.
Step #9.) We can now restart our application and access our newly created GQL query. Note following aspects :-
- We supplied the id as 1 in the request to this GQL-Query.
- We are interested in fetching only the 2 fields only i.e. id and firstName.
Question :- Say, we now want to fetch field : lastName along with fields : id and firstName as well from this GQL :-
Question :- Say, we now only want to fetch a particular field “firstName” from the GQL Query :-
Question :- Let’s now also get the subjects associated with particular student in the response ?
Step #1.) We first define the information into the schema definition of our GQL Query :-
Step #2.) We can now query and fetch our subjects information as well now :-
Question :- Say, we also want to fetch other attributes of each of subject :-
Answer → Note that, while querying through GQL, we always uses POST type of requests.
Question :- Show a full-fledged GQL-Query for our Student-Service application ?
Question :- Can we access/hit our GQL-Query through the Postman client ?
That’s all in this series. We would meet you in next part of this series.