Bird
Raised Fist0
GraphQLquery~5 mins

GraphQL vs REST comparison

Choose your learning style10 modes available
Introduction
GraphQL and REST are two ways to get data from a server. Knowing their differences helps you choose the best way for your app.
When you want to get exactly the data you need without extra information.
When your app needs to get data from many sources in one request.
When you want a simple way to update or add data with clear rules.
When you want to keep your app fast by reducing the number of server calls.
When you want to use a standard way that many developers already know.
Syntax
GraphQL
GraphQL query example:
{
  user(id: "1") {
    name
    email
  }
}

REST example:
GET /users/1
Response:
{
  "name": "Alice",
  "email": "alice@example.com"
}
GraphQL uses a single endpoint and lets you ask for exactly what you want.
REST uses different URLs (endpoints) for different data and returns fixed data shapes.
Examples
You ask for user data with id 1 and specify you want only name and email.
GraphQL
GraphQL query to get user name and email:
{
  user(id: "1") {
    name
    email
  }
}
You call the URL for user 1 and get all user data the server sends.
GraphQL
REST request to get user data:
GET /users/1
One request gets user name and all their post titles.
GraphQL
GraphQL query to get user and their posts:
{
  user(id: "1") {
    name
    posts {
      title
    }
  }
}
You need two calls: one for user data, one for posts.
GraphQL
REST requests to get user and posts:
GET /users/1
GET /users/1/posts
Sample Program
GraphQL gets user info and posts in one request. REST needs two separate calls.
GraphQL
# GraphQL query example
query GetUserAndPosts {
  user(id: "1") {
    name
    email
    posts {
      title
    }
  }
}

# REST example calls
GET /users/1
GET /users/1/posts
OutputSuccess
Important Notes
GraphQL reduces the number of requests by letting you ask for nested data in one call.
REST is simpler to cache because each URL is a fixed resource.
GraphQL requires learning its query language, while REST uses standard HTTP methods.
Summary
GraphQL lets you get exactly the data you want in one request.
REST uses multiple URLs and fixed data shapes for each resource.
Choose GraphQL for flexible, efficient data fetching; choose REST for simplicity and caching.

Practice

(1/5)
1. What is a key advantage of GraphQL compared to REST when fetching data?
easy
A. GraphQL does not support querying nested data.
B. GraphQL requires multiple URLs for different data resources.
C. GraphQL uses fixed data shapes for each resource.
D. GraphQL allows fetching exactly the data you want in a single request.

Solution

  1. Step 1: Understand GraphQL data fetching

    GraphQL lets clients specify exactly what data they want in one request, avoiding over-fetching or under-fetching.
  2. Step 2: Compare with REST approach

    REST typically requires multiple URLs and fixed data shapes, which can lead to multiple requests or extra data.
  3. Final Answer:

    GraphQL allows fetching exactly the data you want in a single request. -> Option D
  4. Quick Check:

    GraphQL = precise single-request data fetching [OK]
Hint: GraphQL = one request, exact data [OK]
Common Mistakes:
  • Thinking GraphQL needs multiple URLs
  • Believing GraphQL returns fixed data shapes
  • Assuming GraphQL can't query nested data
2. Which of the following is the correct way to define a GraphQL query to get a user's name and email?
easy
A. { user: { name, email } }
B. query { user { name, email } }
C. SELECT name, email FROM user
D. GET /user/name,email

Solution

  1. Step 1: Identify GraphQL query syntax

    GraphQL queries start with the keyword 'query' followed by the requested fields inside braces.
  2. Step 2: Check each option

    query { user { name, email } } matches GraphQL syntax. GET /user/name,email is REST style URL. SELECT name, email FROM user is SQL. { user: { name, email } } is invalid JSON-like structure.
  3. Final Answer:

    query { user { name, email } } -> Option B
  4. Quick Check:

    GraphQL query syntax = query { user { name, email } } [OK]
Hint: GraphQL queries start with 'query' keyword [OK]
Common Mistakes:
  • Using REST or SQL syntax instead of GraphQL
  • Omitting the 'query' keyword
  • Incorrect braces placement
3. Given this GraphQL query:
query { book(id: "1") { title author { name } } }

What data structure will the response most likely contain?
medium
A. {"data": {"book": {"title": "1984", "author": {"name": "George Orwell"}}}}
B. {"book": {"title": "1984", "author": "George Orwell"}}
C. {"data": {"book": {"title": "1984", "author": "George Orwell"}}}
D. {"data": {"book": {"title": "1984", "author": ["George Orwell"]}}}

Solution

  1. Step 1: Understand GraphQL response format

    GraphQL responses wrap data inside a 'data' object, matching the query structure exactly.
  2. Step 2: Match nested fields

    The query requests 'book' with 'title' and nested 'author' with 'name', so response must reflect nested objects.
  3. Final Answer:

    {"data": {"book": {"title": "1984", "author": {"name": "George Orwell"}}}} -> Option A
  4. Quick Check:

    GraphQL response = nested 'data' object [OK]
Hint: GraphQL responses wrap data inside 'data' key [OK]
Common Mistakes:
  • Omitting the 'data' wrapper
  • Flattening nested objects incorrectly
  • Using arrays for single nested objects
4. Identify the error in this GraphQL query:
query { user(id: 5) { name, email } }
medium
A. The query keyword is missing.
B. The fields 'name' and 'email' should be inside parentheses.
C. The id value should be a string, so it needs quotes.
D. GraphQL does not support querying users by id.

Solution

  1. Step 1: Check argument types in GraphQL

    GraphQL requires string arguments to be quoted. Here, id is likely a string and should be "5".
  2. Step 2: Verify field syntax

    Fields 'name' and 'email' are correctly listed with commas, no parentheses needed.
  3. Final Answer:

    The id value should be a string, so it needs quotes. -> Option C
  4. Quick Check:

    String arguments need quotes in GraphQL [OK]
Hint: Quote string arguments in GraphQL queries [OK]
Common Mistakes:
  • Leaving string arguments unquoted
  • Adding parentheses around fields
  • Assuming query keyword is optional
5. You want to design an API for a mobile app that needs flexible data fetching with minimal requests and efficient caching. Which approach is best and why?
hard
A. Use GraphQL because it allows clients to request exactly what they need in one request.
B. Use REST because it is simpler and caches well with fixed URLs.
C. Use REST because it supports nested queries better than GraphQL.
D. Use GraphQL because it requires multiple requests for different data.

Solution

  1. Step 1: Analyze requirements for flexible data fetching and minimal requests

    GraphQL excels at letting clients specify exactly what data they want, reducing multiple requests.
  2. Step 2: Consider caching and efficiency

    While REST is simpler and caches well, GraphQL's single-request flexibility suits mobile apps needing efficient data transfer.
  3. Final Answer:

    Use GraphQL because it allows clients to request exactly what they need in one request. -> Option A
  4. Quick Check:

    Flexible, minimal requests = GraphQL [OK]
Hint: Flexible single-request fetching = GraphQL [OK]
Common Mistakes:
  • Choosing REST for flexibility over GraphQL
  • Thinking GraphQL needs multiple requests
  • Assuming REST handles nested queries better
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard