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
Recall & Review
beginner
What is the purpose of the Problem Details (RFC 7807) format in REST APIs?
It provides a standardized way to return machine-readable error details in HTTP responses, making it easier for clients to understand and handle errors.
Click to reveal answer
beginner
Name the five standard fields defined in the Problem Details (RFC 7807) format.
The five standard fields are: type, title, status, detail, and instance.
Click to reveal answer
beginner
What does the type field represent in the Problem Details format?
It is a URI reference that identifies the problem type. It helps clients understand the kind of error without reading the full message.
Click to reveal answer
beginner
How should the status field be used in the Problem Details response?
It should contain the HTTP status code generated by the server for this error, such as 404 or 500.
Click to reveal answer
intermediate
Can you add custom fields to the Problem Details (RFC 7807) JSON response? If yes, how?
Yes, you can add custom fields alongside the standard ones to provide extra information specific to your API or error scenario.
Click to reveal answer
Which field in RFC 7807 contains a short, human-readable summary of the problem?
Atype
Binstance
Cdetail
Dtitle
✗ Incorrect
The title field provides a short, human-readable summary of the problem.
What HTTP status code should be included in the status field?
AThe HTTP status code of the error response
BAny random number
CAlways 200
DThe client IP address
✗ Incorrect
The status field must contain the HTTP status code that the server returned for the error.
Is the instance field optional or required in the Problem Details format?
ARequired
BDeprecated
COptional
DMust be empty
✗ Incorrect
The instance field is optional and can provide a URI reference that identifies the specific occurrence of the problem.
What content type should be used when sending a Problem Details response?
Aapplication/problem+json
Btext/html
Capplication/json
Dtext/plain
✗ Incorrect
The official media type for Problem Details JSON responses is application/problem+json.
Can the type field be a blank string?
AYes, it can be blank
BNo, it must be a valid URI or omitted
CIt must be a number
DIt must be the HTTP status code
✗ Incorrect
The type field should be a URI identifying the problem type or omitted if unknown; it should not be blank.
Explain the purpose and main fields of the Problem Details (RFC 7807) format.
Think about how APIs tell clients what went wrong in a clear way.
You got /3 concepts.
Describe how you would implement a Problem Details response for a 404 Not Found error.
Imagine your API tells a client that a resource is missing.
You got /5 concepts.
Practice
(1/5)
1. What is the main purpose of the Problem Details (RFC 7807) format in REST APIs?
easy
A. To speed up API response times
B. To standardize error responses so clients can understand errors better
C. To encrypt API responses for security
D. To format successful data responses uniformly
Solution
Step 1: Understand the role of Problem Details format
The format is designed to provide a consistent way to report errors in APIs.
Step 2: Identify the main benefit
It helps clients understand and handle errors better by standardizing error responses.
Final Answer:
To standardize error responses so clients can understand errors better -> Option B
Quick Check:
Purpose = Standardize error responses [OK]
Hint: Remember: Problem Details = standardized error info [OK]
Common Mistakes:
Confusing error format with data encryption
Thinking it speeds up API responses
Assuming it formats successful responses
2. Which of the following is a REQUIRED field in the Problem Details JSON object according to RFC 7807?
easy
A. type
B. status
C. detail
D. instance
Solution
Step 1: Recall required fields in RFC 7807
The RFC requires the "type" field to identify the error type URI.
Step 2: Check other fields
Fields like "status", "detail", and "instance" are optional but recommended.
Final Answer:
type -> Option A
Quick Check:
Required field = type [OK]
Hint: Only 'type' is mandatory in Problem Details [OK]
Common Mistakes:
Assuming 'status' is required
Confusing 'detail' as mandatory
Thinking 'instance' is always needed
3. Given this Problem Details JSON response:
{"type": "https://example.com/probs/out-of-credit", "title": "You do not have enough credit.", "status": 403, "detail": "Your current balance is 30, but that costs 50.", "instance": "/account/12345/msgs/abc"}
What is the HTTP status code indicated?
medium
A. 403
B. 404
C. 200
D. 500
Solution
Step 1: Locate the status field in JSON
The JSON has "status": 403, which indicates the HTTP status code.
Step 2: Understand the meaning of 403
403 means Forbidden, matching the error about insufficient credit.
Final Answer:
403 -> Option A
Quick Check:
Status code = 403 [OK]
Hint: Look for 'status' field for HTTP code [OK]
Common Mistakes:
Confusing status with 'detail' content
Picking 200 as success code
Ignoring the numeric status field
4. You receive this Problem Details JSON:
{"title": "Invalid input", "status": 400, "detail": "Missing required field 'name'"}
What is missing that violates RFC 7807 requirements?
medium
A. The 'title' field should be a URL
B. The 'status' field should be a string
C. The 'detail' field should be omitted
D. The 'type' field is missing
Solution
Step 1: Check required fields in the JSON
The 'type' field is required by RFC 7807 but is missing here.
Step 2: Validate other fields
'status' is correctly a number, 'detail' and 'title' are valid types.
Final Answer:
The 'type' field is missing -> Option D
Quick Check:
Missing required field = type [OK]
Hint: Always include 'type' field in Problem Details [OK]
Common Mistakes:
Thinking 'status' must be string
Removing 'detail' field
Assuming 'title' must be URL
5. You want to create a Problem Details response for a rate limit error. Which JSON object correctly follows RFC 7807 and clearly informs the client about the error?
hard
A. {"type": "rate-limit", "title": "Error", "status": 429, "detail": "Limit reached"}
B. {"title": "Rate limit exceeded", "status": "429", "detail": "Too many requests", "instance": "/api/v1/resource"}
C. {"type": "https://example.com/probs/rate-limit", "title": "Rate limit exceeded", "status": 429, "detail": "You have sent too many requests in a short time.", "instance": "/api/v1/resource"}
D. {"type": "https://example.com/probs/rate-limit", "title": "Rate limit exceeded", "status": 200, "detail": "Too many requests"}
Solution
Step 1: Check required fields and correct types
{"type": "https://example.com/probs/rate-limit", "title": "Rate limit exceeded", "status": 429, "detail": "You have sent too many requests in a short time.", "instance": "/api/v1/resource"} includes 'type' as a URI, 'title', numeric 'status' 429, 'detail', and 'instance' fields correctly.
Step 2: Validate status code and clarity
Status 429 means Too Many Requests, matching the error. Other options have missing or wrong fields or wrong status codes.
Final Answer:
{"type": "https://example.com/probs/rate-limit", "title": "Rate limit exceeded", "status": 429, "detail": "You have sent too many requests in a short time.", "instance": "/api/v1/resource"} -> Option C
Quick Check:
Correct fields and status = {"type": "https://example.com/probs/rate-limit", "title": "Rate limit exceeded", "status": 429, "detail": "You have sent too many requests in a short time.", "instance": "/api/v1/resource"} [OK]
Hint: Use URI in 'type' and correct numeric 'status' [OK]