GraphQL is
a specification that provides a query language for your API. Using GraphQL
client can ask the data that he is interested in.
Who
developed GraphQL?
Facebook
developed GraphQL and open sourced it.
How
traditional APIs works?
In traditional
approach, Client request for some data by hitting an endpoint. Server receives
the request, process it and send the response to client.
Here the
problem come in, Client may not be interested in all the response data he is
received from server. Client may be interested in subset of the response.
Client will extract/filter the subset the and consume as per the needs.
How the
APIs works with GraphQL?
a.
Client
send a GraphQL query to server.
b.
GraphQL
server send the results back to client, the result contains exactly the payload
that client is interested in.
For
example, a sample GraphQL query looks like below.
query { allUsers { id name } }
In the
above query, client requesting for all the users information using ‘allUsers’
API, and client is interested in only id and name fields of the user.
Response
from GraphQL server looks like below.
{
"data": {
"allUsers": [
{
"id": "1",
"name": "Ram"
},
{
"id": "2",
"name": "Rahim"
},
{
"id": "3",
"name": "Robert"
},
{
"id": "4",
"name": "Antony"
},
{
"id": "5",
"name": "Krishna"
},
{
"id": "6",
"name": "Saurav"
}
]
}
}
You can
even ask for last three users information with below query.
query {
allUsers (last : 3) {
id
name
}
}
You will
get response like below.
{
"data": {
"allUsers": [
{
"id": "4",
"name": "Antony"
},
{
"id": "5",
"name": "Krishna"
},
{
"id": "6",
"name": "Saurav"
}
]
}
}
Advantages
a.
Client
is given freedom to ask what exactly he need. So no further filtering is
required at client end.
b.
You
can ask GraphQL server for all the data you require in single request. GraphQL
can able to aggregate the responses from multiple APIs.
c.
Many
languages like Java, Go, nodejs has implementations of GraphQL Specification.
d.
Since
GraphQL is a specification, it is completely language independent, you can
write a GraphQL client in Java and you can communicate with a GraphQL server
that is written in Go.
Note
a. If you
want to play with GraphQL online, try below link.
No comments:
Post a Comment