Bird
Raised Fist0
Rest APIprogramming~7 mins

Nested error reporting in Rest API

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

Nested error reporting helps show detailed problems inside complex data or requests. It makes it easier to find exactly where something went wrong.

When an API request has multiple parts and some parts fail while others succeed.
When validating a form with sections, and you want to tell the user which fields inside each section have errors.
When processing nested data like JSON objects or arrays and you want to report errors at different levels.
When you want to give clear feedback about errors inside related objects or sub-requests.
Syntax
Rest API
{
  "error": {
    "message": "Main error message",
    "details": {
      "field1": "Error message for field1",
      "nestedField": {
        "subField1": "Error message for subField1"
      }
    }
  }
}

The main error object contains a message and a details object.

Details can have nested objects to represent errors inside nested data.

Examples
This example shows an error for a missing username and a nested error inside the profile object for email format.
Rest API
{
  "error": {
    "message": "Validation failed",
    "details": {
      "username": "Username is required",
      "profile": {
        "email": "Invalid email format"
      }
    }
  }
}
This example reports errors inside an order object, including errors for specific items by index and a payment error.
Rest API
{
  "error": {
    "message": "Multiple errors",
    "details": {
      "order": {
        "items": {
          "0": "Item ID missing",
          "2": "Quantity must be positive"
        },
        "payment": "Payment method not supported"
      }
    }
  }
}
Sample Program

This Flask API endpoint checks for a username and a valid email inside a profile object. It returns nested error messages if validation fails.

Rest API
from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/submit', methods=['POST'])
def submit():
    data = request.json
    errors = {}

    if not data.get('username'):
        errors['username'] = 'Username is required'

    profile = data.get('profile', {})
    profile_errors = {}
    email = profile.get('email', '')
    if '@' not in email and email != '':
        profile_errors['email'] = 'Invalid email format'

    if profile_errors:
        errors['profile'] = profile_errors

    if errors:
        return jsonify({
            'error': {
                'message': 'Validation failed',
                'details': errors
            }
        }), 400

    return jsonify({'message': 'Success'}), 200

if __name__ == '__main__':
    app.run(debug=True)
OutputSuccess
Important Notes

Use nested error reporting to help users fix specific parts of their input.

Keep error messages clear and related to the exact field or subfield.

APIs should return HTTP status codes like 400 for validation errors along with nested error details.

Summary

Nested error reporting shows errors inside complex or nested data clearly.

It helps users and developers find and fix problems faster.

Use structured JSON objects with nested details for best clarity.

Practice

(1/5)
1.

What is the main purpose of nested error reporting in REST APIs?

easy
A. To show detailed errors inside nested data clearly
B. To hide errors from users
C. To speed up the API response time
D. To encrypt error messages

Solution

  1. Step 1: Understand error reporting basics

    Error reporting helps identify problems in API requests or responses.
  2. Step 2: Recognize nested error reporting role

    Nested error reporting shows errors inside complex or nested data structures clearly.
  3. Final Answer:

    To show detailed errors inside nested data clearly -> Option A
  4. Quick Check:

    Nested error reporting = detailed nested errors [OK]
Hint: Nested errors explain problems inside complex data [OK]
Common Mistakes:
  • Thinking nested errors hide problems
  • Confusing error reporting with encryption
  • Assuming it speeds up API responses
2.

Which JSON structure correctly represents a nested error for a REST API response?

{
  "error": {
    "message": "Invalid input",
    "details": {
      "field": "email",
      "error": "Invalid format"
    }
  }
}
easy
A. { "error": "Invalid input", "details": "email error" }
B. { "message": "Invalid input", "field": "email" }
C. { "error": ["Invalid input", "email error"] }
D. { "error": { "message": "Invalid input", "details": { "field": "email", "error": "Invalid format" } } }

Solution

  1. Step 1: Identify nested JSON error format

    Nested error reporting uses objects inside objects to show details clearly.
  2. Step 2: Match the correct JSON structure

    { "error": { "message": "Invalid input", "details": { "field": "email", "error": "Invalid format" } } } shows an error object with a message and nested details object with field and error.
  3. Final Answer:

    { "error": { "message": "Invalid input", "details": { "field": "email", "error": "Invalid format" } } } -> Option D
  4. Quick Check:

    Nested JSON error = { "error": { "message": "Invalid input", "details": { "field": "email", "error": "Invalid format" } } } [OK]
Hint: Look for nested objects inside error key [OK]
Common Mistakes:
  • Using arrays instead of objects for nested errors
  • Missing nested details object
  • Flattening error info without nesting
3.

Given this REST API error response JSON, what is the error message for the password field?

{
  "error": {
    "message": "Validation failed",
    "fields": {
      "email": "Invalid format",
      "password": "Too short"
    }
  }
}
medium
A. Validation failed
B. Invalid format
C. Too short
D. No error

Solution

  1. Step 1: Locate the password field in JSON

    The password error is inside error.fields.password.
  2. Step 2: Read the error message for password

    The value is "Too short", indicating the password error.
  3. Final Answer:

    Too short -> Option C
  4. Quick Check:

    password error message = "Too short" [OK]
Hint: Find error under error.fields.password [OK]
Common Mistakes:
  • Choosing top-level message instead of field error
  • Confusing email error with password error
  • Ignoring nested fields object
4.

Identify the error in this nested error JSON response:

{
  "error": {
    "message": "Invalid data",
    "details": [
      { "field": "username", "error": "Required" },
      { "field": "age", "error": 25 }
    ]
  }
}
medium
A. The 'error' value for 'age' should be a string, not a number
B. The 'details' key should be a string, not an array
C. The 'message' key is missing
D. The 'field' keys should be numbers

Solution

  1. Step 1: Check error value types in details array

    Each error value should be a descriptive string, not a number.
  2. Step 2: Identify incorrect error value

    The 'age' field has error value 25 (number), which is incorrect.
  3. Final Answer:

    The 'error' value for 'age' should be a string, not a number -> Option A
  4. Quick Check:

    Error values must be strings [OK]
Hint: Error messages must be strings, not numbers [OK]
Common Mistakes:
  • Ignoring type mismatch in error values
  • Thinking details must be string instead of array
  • Missing the message key
5.

You want to design a nested error response for a REST API that validates a user profile with nested address fields. Which JSON structure best represents errors for both the email and nested address.zipcode fields?

hard
A. { "error": { "email": "Invalid", "address.zipcode": "Missing" } }
B. { "error": { "fields": { "email": "Invalid", "address": { "zipcode": "Missing" } } } }
C. { "error": [ { "email": "Invalid" }, { "address": { "zipcode": "Missing" } } ] }
D. { "error": "Invalid email and missing zipcode" }

Solution

  1. Step 1: Understand nested error reporting for nested fields

    Nested fields like address.zipcode should be represented as nested objects.
  2. Step 2: Evaluate JSON options for nested structure

    { "error": { "fields": { "email": "Invalid", "address": { "zipcode": "Missing" } } } } uses a 'fields' object with 'email' error and nested 'address' object containing 'zipcode' error.
  3. Final Answer:

    { "error": { "fields": { "email": "Invalid", "address": { "zipcode": "Missing" } } } } -> Option B
  4. Quick Check:

    Nested fields use nested objects = { "error": { "fields": { "email": "Invalid", "address": { "zipcode": "Missing" } } } } [OK]
Hint: Use nested objects for nested field errors [OK]
Common Mistakes:
  • Using dot notation keys instead of nested objects
  • Flattening nested errors into arrays
  • Combining all errors into one string