GraphQL is a query language for APIs. It provides a complete and understandable description of the data in your API and gives clients the power to ask for exactly what they need and nothing more.
Send a GraphQL query to your API and get exactly what you need. These queries always return predictable results using GraphQL. It is fast and stable.
Once you have opened the GraphQL explorer provided by GitHub, you'll notice that it will display a sample query in the left panel that should look like this:
# We'll get a sample query showing your username! query { viewer { login } }
By using GraphQL, we can create useful queries, grab a query’s response, and also create mutations.
GraphQL can be used to check database IDs. For example:
{ user(login: "yourUsername") { databaseId } }
The response will be generated like this:
{ "data": { "user": { "databaseId": 12345678 } } }
Next, I will explain the mutation example using GraphQL with GitHub. Suppose if someone has to add a reaction to an issue. We will be doing this by using GraphQL.
{ repository(owner: "yourName", name: "repository-name") { issues(last: 5) { edges { node { title id } } } } }
It will generate a response like this:
{ "data": { "repository": { "issues": { "edges": [ { "node": { "title": "Title of the 1st issue", "id": "MDU6SRXNXzdWUyMTg2NTcwMzk=" } }, { "node": { "title": "Another issue", "id": "MDU6SRXXNzdWUyMTg2NjA4OTQ=" } } ] } } } }
It will automatically generate unique IDs for each different type of issue. Now, we will be using the concept of the mutation to add reaction to any one of the issues by using its unique ID.
mutation { addReaction(input: {subjectId: "MDU6SRXXNzdWUyMTg2NjA4OTQ=", content: LAUGH}) { reaction { content id } } }
Hence, this will add a "LAUGH" reaction to the issue. It can also be observed by checking the response we're getting:
{ "data": { "addReaction": { "reaction": { "content": "LAUGH", "id": "MDg6UmVhY3Rpb24xNTQyNTUxMQ==" } } } }
Join the Red Hat Developer Program (it’s free) and get access to related cheat sheets, books, and product downloads.
Last updated: November 9, 2017