top of page
hand-businesswoman-touching-hand-artificial-intelligence-meaning-technology-connection-go-

How to test GraphQL using Postman ?

Introduction


When we call an API, it internally executes some code on the server. That code will do any tasks like computation, fetch the data, or call some other API.


GraphQL is an open-source data query and manipulation language for APIs. It is created by Facebook in 2012 and made open sourced in 2015. It helps to fetch the data from the server to the client and to get the response what the user exactly requests, nothing more or less. It provides a better data-fetching approach.


GraphQL is currently used by a large number of companies like PayPal, GitHub, The New York Times, Glassdoor, Twitter, etc.


Advantages of GraphQL

1. It solves overfetching (getting more data than we need) and underfetching (not getting all the data we need) problems

2. It interacts with many databases.

3. It keeps documentation in sync with API changes automatically.

4. It allows the user to fetch data with a single API call, no need to go many versions.

5. It can be used for query batching and caching.

6. It allows the user to make requests based on needs.

7. It encodes on the client side, not the server side.

8. It is suitable for microservices and also complex systems


Tools support GraphQL

Following tools support GraphQL in API Testing.

  1. Postman

  2. Rest Assured

  3. Rest Sharp

  4. Karate

  5. TestProject

  6. Test GraphQL Java

Components in GraphQL

  1. Schema : It describes the available functionalities to the clients which are connecting to it. Our request needs a GraphQL schema in order to enable autocompletion. using GraphQL introspection, Postman will automatically fetch a schema based on the request URL. A message is displayed next to the schema selection list in green color when Postman is able to auto-fetch a schema.

  2. Query: It is used to read or fetch values.

  3. Mutations: It modifies data in the data store and returns a value. Mutations help to insert, update, or delete data. It is similar to REST API's Create, Update or Delete methods.

  4. Resolver: Resolvers provide the directions for converting GraphQL operation into data. They also resolve the query to data by defining resolver functions. They are also known Query Handlers.

  5. Subscriptions: It allows the server to send the data to the client when a specific event occurs. It is similar to Trigger in database concepts.

  6. HTTP Methods: It has 2 methods, POST and GET.

Difference between GraphQL and REST

GraphQL

REST

Consisteny across multiple platforms

Not consistent across multiple platforms

Message format should be a String for GraphQL

Message format can be anything.

It uses metadata for

query validation

​It does not have any machine readable metadata

It is strongly typed

It is weakly typed

GraphQL is organized based on schema

REST is organized based on endpoint

It has a growing user community

It has a large user community

​It has single endpoint

It can have multiple endpoints

It follows client-driven architecture

It follows server-driven architecture

Things needed to start GraphQL

1. Documentation

2. Endpoints

3. Query format

4. Test resolvers

5. HTTP Methods


How to test GraphQL endpoints using Postman ?

Postman tests many kinds of HTTP endpoints, GraphQL is one among them.


Query1: Fetch the names of 2 repositories in my GitHub

Step 1. Create a Collection in Postman.

Step 2. Name the collection as “GraphQL using Postman”.

Step 3. Add a POST request and name as Get total no. of repositories in my GitHub. Enter the endpoint as https://api.github.com/graphql.

Step 4. Postman allows to send the body in GraphQL. Next click the body tab and select GraphQL and enter the script in body.

Step 5. Next click Authorization tab and select Bearer Token and enter your Token.

Step 6. We can edit the GRAPHQL variables based on our requirement. Here I want to fetch just 2 records from my GitHub.


GraphQL Variables:

A GraphQL request consists of two sections. One for query and another for variables. GraphQL Variables are declared after the query and passed as arguments to a function. GraphQL takes the dynamic values out of the query section and keeps in variables section.

Steps involved with variables

1. Replace the static value in the query with $variableName

2. Declare $variableName as one of the variables accepted by the query

3. Pass variableName


Step 7. Click on Send.

Step 8. We can see just 2 Repository names DSAlgoProject and JenkinsDemoProject from my GitHub.

Query2: Fetch the specified fields, such as url, createdAt and updated At for a repository in my GitHub


Step 1. Add another request.


Step 2: Select a POST request and name it as Get specific fields for a repository. Enter the endpoint as https://api.github.com/graphql.


Step 3. Click Body tab and select GraphQL and enter the script. Here we are going to fetch the following fields createdAt, updatedAt and owner for my repository DSAlgoproject.

Step 4. Click Authorization tab, select Bearer token and paste Personal access token generated from GitHub.


Step 5. Click on Send.


Step 6. We can see the response with createdAt, updatedAt, and url for a particular Repository DSAlgoProject with success code 200.

How to generate Personal Access Token in your GitHub?

Personal access token is similar to your passwords used for authentication to your GitHub. There are 2 types of Personal access tokens in GitHub.

· 1.Fine-grained personal access token – It has more security features

· 2.Personal access token (classic) – It has less security features


Step 1. Signin to your GitHub account

Step 2. Click on your Profile picture on the right hand side and click on Settings



Step 3. Click on Developer Settings under Public profile on left hand side.

Step 4: Then click on Tokens (Classic).



Step 5: Click on Generate New Token and copy, paste it in a Word document for future reference.

Conclusion

In this blog, we covered how to test GraphQL using Postman. GraphQL is used to fetch data with a single API call and build better APIs.

261 views0 comments
bottom of page