Validation error details in Rest API - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When a REST API checks data for errors, it often validates each input field.
We want to know how the time to find errors grows as the number of fields increases.
Analyze the time complexity of the following code snippet.
// Validate each field in the input data
for (const field of inputFields) {
if (!isValid(field)) {
errors.push({ field, message: 'Invalid value' });
}
}
return errors;
This code checks each input field one by one and collects error messages for invalid fields.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each input field to validate it.
- How many times: Once for every field in the input list.
As the number of input fields grows, the number of validations grows the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 validations |
| 100 | 100 validations |
| 1000 | 1000 validations |
Pattern observation: The work grows directly with the number of fields; double the fields, double the checks.
Time Complexity: O(n)
This means the time to find validation errors grows in a straight line with the number of input fields.
[X] Wrong: "Validation time stays the same no matter how many fields there are."
[OK] Correct: Each field needs to be checked, so more fields mean more work and more time.
Understanding how validation scales helps you design APIs that handle many inputs efficiently and predict performance.
"What if the validation function itself loops through a list inside each field? How would the time complexity change?"
Practice
Solution
Step 1: Understand validation errors
Validation errors tell us what input data is incorrect or missing.Step 2: Purpose of error details
Error details explain which fields caused the problem and why, helping fix input.Final Answer:
To explain which input fields are wrong and why -> Option AQuick Check:
Validation error details = Explain input errors [OK]
- Thinking error details speed up server
- Confusing error details with encryption
- Assuming error details are for logging only
Solution
Step 1: Identify error details format
Error details usually use a JSON object with field names as keys and error messages as values.Step 2: Check options
{"errors": {"email": "Invalid format", "password": "Too short"}} shows a JSON object with "errors" key and field-specific messages, which is correct.Final Answer:
{"errors": {"email": "Invalid format", "password": "Too short"}} -> Option DQuick Check:
Validation errors = JSON object with field messages [OK]
- Using arrays instead of objects for errors
- Confusing success response with error details
- Missing field names in error messages
{"errors": {"username": "Required field", "age": "Must be a number"}}What message should the client show for the 'age' field?
Solution
Step 1: Read the JSON error response
The error for "age" is "Must be a number".Step 2: Match the message to the field
The client should show the message exactly as given for the "age" field.Final Answer:
Must be a number -> Option AQuick Check:
Field 'age' error = Must be a number [OK]
- Mixing error messages between fields
- Showing unrelated error messages
- Ignoring the JSON structure
{"error": "Invalid input", "fields": ["email", "password"]}What is wrong with this error detail format?
Solution
Step 1: Analyze error detail format
The "fields" key has a list of field names but no messages explaining the errors.Step 2: Identify correct format
Validation error details should map each field to a specific error message, not just list fields.Final Answer:
It uses a list instead of mapping fields to messages -> Option BQuick Check:
Error details need field-message pairs [OK]
- Listing fields without error explanations
- Assuming any error JSON is correct
- Ignoring the need for descriptive messages
Solution
Step 1: Understand multiple errors per field
To show many errors for one field, use a list (array) of messages for that field.Step 2: Check JSON structures
{"errors": {"email": ["Required", "Invalid format"], "password": ["Too short"]}} uses a dictionary with field keys and lists of error messages, which fits the need.Final Answer:
{"errors": {"email": ["Required", "Invalid format"], "password": ["Too short"]}} -> Option CQuick Check:
Multiple errors per field = list of messages [OK]
- Using flat lists without field keys
- Not supporting multiple messages per field
- Using vague error messages without details
