Bird
Raised Fist0
GraphQLquery~10 mins

Why error handling differs from REST in GraphQL - Visual Breakdown

Choose your learning style10 modes available
Concept Flow - Why error handling differs from REST
Client sends request
↓
Server processes request
↓
REST: HTTP status code sent
↓
Client interprets status code
↓
Client sends GraphQL query
↓
Server processes query
↓
GraphQL: HTTP 200 always
↓
Errors included in response body
↓
Client checks 'errors' field in response
REST uses HTTP status codes for errors, while GraphQL always returns HTTP 200 and includes errors inside the response body.
Execution Sample
GraphQL
query {
  user(id: "123") {
    name
    email
  }
}

Response:
{
  "data": null,
  "errors": [{"message": "User not found"}]
}
A GraphQL query requesting user data returns HTTP 200 but includes an error message inside the response body.
Execution Table
StepActionHTTP StatusResponse BodyClient Handling
1Client sends GraphQL query200{}Wait for response
2Server processes query200{"data": null, "errors": [{"message": "User not found"}]}Check 'errors' field
3Client receives response200{"data": null, "errors": [{"message": "User not found"}]}Detect error from 'errors' field, not status code
4Client displays error message200{"data": null, "errors": [{"message": "User not found"}]}Show error to user
5End200Response fully handledStop processing
💡 Execution stops after client handles error inside response body despite HTTP 200 status
Variable Tracker
VariableStartAfter Step 2After Step 3Final
HTTP StatusN/A200200200
Response Body{}{"data": null, "errors": [{"message": "User not found"}]}{"data": null, "errors": [{"message": "User not found"}]}Handled error inside response
Client Error Detectedfalsefalsetruetrue
Key Moments - 2 Insights
Why does GraphQL always return HTTP 200 even when there is an error?
GraphQL returns HTTP 200 because errors are included inside the response body under the 'errors' field, so the HTTP status does not indicate error presence. See execution_table step 2 and 3.
How does the client know there is an error in GraphQL response?
The client checks the 'errors' field inside the response body, not the HTTP status code. This is shown in execution_table step 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the HTTP status code when the error message is returned?
A404
B200
C500
D400
💡 Hint
Check the 'HTTP Status' column at step 2 and 3 in the execution_table.
At which step does the client detect the error in the GraphQL response?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Client Handling' column in execution_table where the client checks the 'errors' field.
If GraphQL used HTTP status codes for errors like REST, how would the HTTP status change in the table?
AIt would change to 404 or 500 on error
BIt would be 100
CIt would remain 200
DIt would be 302
💡 Hint
Compare GraphQL's approach with REST's use of HTTP status codes for errors.
Concept Snapshot
GraphQL error handling differs from REST:
- REST uses HTTP status codes (e.g., 404, 500) to indicate errors.
- GraphQL always returns HTTP 200.
- Errors are included inside the response body under 'errors' field.
- Clients must check 'errors' field to detect problems.
- This allows partial data with errors in one response.
Full Transcript
In REST APIs, errors are indicated by HTTP status codes like 404 or 500. The client checks these codes to know if something went wrong. In GraphQL, the server always returns HTTP 200 status even if there are errors. Instead, errors are included inside the response body in a special 'errors' field. The client must look inside the response body to detect errors. This difference means GraphQL can return partial data along with errors in one response. The execution table shows the client sending a query, receiving HTTP 200 with an error message inside the body, and then detecting the error by checking the 'errors' field. This approach requires clients to handle errors differently than in REST.

Practice

(1/5)
1. In GraphQL, how are errors handled differently compared to REST APIs?
easy
A. GraphQL returns data and errors together in one response.
B. GraphQL stops execution and returns only errors without data.
C. GraphQL returns errors as HTTP status codes only.
D. GraphQL does not provide any error details to the client.

Solution

  1. Step 1: Understand REST error handling

    REST APIs usually return errors as HTTP status codes and no data when an error occurs.
  2. Step 2: Understand GraphQL error handling

    GraphQL returns both data and errors together in one response, allowing partial data delivery.
  3. Final Answer:

    GraphQL returns data and errors together in one response. -> Option A
  4. Quick Check:

    GraphQL response = data + errors [OK]
Hint: Remember GraphQL sends data and errors together [OK]
Common Mistakes:
  • Thinking GraphQL only returns errors without data
  • Confusing HTTP status codes with GraphQL error handling
  • Assuming GraphQL hides error details
2. Which part of a GraphQL response contains error details?
easy
A. The data field
B. The HTTP status code
C. The errors field
D. The extensions field only

Solution

  1. Step 1: Identify error location in GraphQL response

    GraphQL responses include an errors field that lists error messages and details.
  2. Step 2: Differentiate from other fields

    The data field contains the requested data, HTTP status codes are not used for errors, and extensions may have extra info but not main errors.
  3. Final Answer:

    The errors field -> Option C
  4. Quick Check:

    Error details = errors field [OK]
Hint: Errors are always in the 'errors' field [OK]
Common Mistakes:
  • Looking for errors in the data field
  • Relying on HTTP status codes for errors
  • Confusing extensions with errors
3. Given this GraphQL response:
{"data": {"user": null}, "errors": [{"message": "User not found", "path": ["user"]}]}

What does this response mean?
medium
A. The user exists but has no data.
B. The query failed completely and no data is returned.
C. The server returned a syntax error in the query.
D. Partial data is returned; user field is null due to an error.

Solution

  1. Step 1: Analyze the data field

    The data field shows "user": null, meaning no user data was returned.
  2. Step 2: Analyze the errors field

    The errors field shows "User not found" with path ["user"], indicating an error related to the user field.
  3. Final Answer:

    Partial data is returned; user field is null due to an error. -> Option D
  4. Quick Check:

    Partial data + error path = null field [OK]
Hint: Null data with errors means partial failure [OK]
Common Mistakes:
  • Assuming no data means full failure
  • Ignoring the errors field
  • Thinking user exists without data
4. You receive this GraphQL response:
{"data": {"post": {"title": "Hello World"}}, "errors": [{"message": "Author not found", "path": ["post", "author"]}]}

What is the likely issue?
medium
A. The post data is returned but author field caused an error.
B. The server returned no data at all.
C. The entire query failed due to syntax error.
D. The author field is missing from the query.

Solution

  1. Step 1: Check the data field

    The data field contains post with a title, so some data is returned.
  2. Step 2: Check the errors field

    The error message "Author not found" with path ["post", "author"] shows the error is specific to the author field inside post.
  3. Final Answer:

    The post data is returned but author field caused an error. -> Option A
  4. Quick Check:

    Data present + error path = partial error [OK]
Hint: Error path shows which field failed [OK]
Common Mistakes:
  • Assuming full query failure
  • Ignoring error path details
  • Thinking missing field means query error
5. Why does GraphQL include the error path in its error messages?
hard
A. To replace HTTP status codes for error classification.
B. To indicate the exact field causing the error for better client handling.
C. To hide sensitive server information from clients.
D. To provide a list of all fields in the query.

Solution

  1. Step 1: Understand the purpose of error path

    The path shows the exact location in the query where the error happened.
  2. Step 2: Understand client benefit

    This helps clients know which part of the data failed and handle partial data properly.
  3. Final Answer:

    To indicate the exact field causing the error for better client handling. -> Option B
  4. Quick Check:

    Error path = pinpoint error location [OK]
Hint: Error path points to problem field [OK]
Common Mistakes:
  • Thinking path replaces HTTP status codes
  • Assuming path hides server info
  • Confusing path with full query fields
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