Let's Move To GraphQL

on their website

Developed by Facebook in 2012

for their Mobile Apps

Open sourced first spec 2015

Graphql.js

Its a  Query Language built on top of REST

but way better

Everything is a single POST call /endpoint

Query is sent as post body

Server defines a schema and relationship between objects

query {
 users {
   name
 }
 likes {
   id
 }
}

Sample Call

curl 'http://localhost/graphql?' \
-XPOST \
--data-binary 
   'query { users: { name } likes: { id } }'
users {
   name : String
   likes {
     id: Int
   }
}
likes {
    id: Int
}

Sample Schema

query {
 users {
   name
   likes: {
     id
   }
 }
}

Sample Call

Who Wants What

Users

Faster Products

Developer

More Free Time

Sales

More Customers

Support

No Hard User Issues

Faster Products

More Customers

More Free Time

No Hard User Issues 

Technical Writers

Lesser Documenting

Lesser Documenting

Use Case 1

Just Make Another Call

GET /users
GET /likes/1
GET /likes/2
GET /likes/3

No of Calls: 4

REST

3

  Prathik

4

    Saurabh

5

     Armaan

When user list and likes are separate calls

System will Collapse

query {
 users {
  name
  profilepic
  bio
  likes: {
    id
  }
 }
}

No of Calls: 1

GraphQL

3

  Prathik

4

    Saurabh

5

     Armaan

Use Case 2

Just Rename That Field

[{
  name
  profilepic
  bio
}]
[{
  name
  pic
  bio
}]

Things Change Everywhere

REST

When API renames a field

query {
 users: {
  name
  profilepic: pic 
  bio
 }
}

No Code Change

GraphQL

Use Case 3

Just Play Around

Its takes time to write documentation

REST

Its painful to keep it up to date

REST

Its tough to agree on one tool

Provides documentation free of cost

GraphQL

Swagger, Postman, GitBook all in one

GraphQL

Use Case 4

I Don't Need That

REST

GET /users
GET /users-without-pic

or 

GET /users?includepic=false

  Prathik

3

  Saurabh

4

Armaan

33

Loki

300

3

  Prathik

4

    Saurabh

When you want to skip a field

query {
 users: {
  name
  bio
  pic
  likes: {
    id
  }
 }
}

GraphQL

query {
 users: {
  name
  likes: {
    id
  }
 }
}

  Prathik

3

  Saurabh

4

Armaan

33

Loki

300

3

  Prathik

4

    Saurabh

Client needs to understand single auth mechanism

Plus all advantages of single endpoint

Links

Namaste 

Thank You

Lets Move to GraphQL

By Prathik S

Lets Move to GraphQL

  • 457