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
Rate Limit Error Responses
📖 Scenario: You are building a simple REST API that limits how many requests a user can make in a short time. If the user sends too many requests, the API should respond with a clear error message and status code.
🎯 Goal: Create a basic API endpoint that tracks request counts per user and returns a rate limit error response when the limit is exceeded.
📋 What You'll Learn
Create a dictionary called request_counts to store user request counts.
Create a variable called MAX_REQUESTS and set it to 3.
Write a function called check_rate_limit(user_id) that increases the count for the user and returns True if under limit, False if limit exceeded.
Print the error response {"error": "Rate limit exceeded", "status": 429} when the limit is exceeded.
💡 Why This Matters
🌍 Real World
APIs often limit how many requests a user can make to protect servers and ensure fair use.
💼 Career
Understanding rate limiting is important for backend developers and API designers to build reliable and secure services.
Progress0 / 4 steps
1
Create the request count dictionary
Create a dictionary called request_counts that is empty initially.
Rest API
Hint
Use curly braces {} to create an empty dictionary.
2
Set the maximum allowed requests
Create a variable called MAX_REQUESTS and set it to 3.
Rest API
Hint
Just assign the number 3 to the variable MAX_REQUESTS.
3
Write the rate limit check function
Write a function called check_rate_limit(user_id) that does the following: 1. If user_id is not in request_counts, add it with value 1. 2. If user_id is already in request_counts, increase its count by 1. 3. Return True if the count is less than or equal to MAX_REQUESTS, otherwise return False.
Rest API
Hint
Use an if statement to check if the user is new, then update counts accordingly.
4
Print the rate limit error response
Call check_rate_limit("user1") five times in a loop. For each call, if it returns False, print the exact string {"error": "Rate limit exceeded", "status": 429}.
Rest API
Hint
Use a for loop to call the function 5 times and print the error message only when the function returns False.
Practice
(1/5)
1. What HTTP status code is commonly used to indicate a rate limit error in REST APIs?
easy
A. 404
B. 429
C. 500
D. 401
Solution
Step 1: Understand HTTP status codes for errors
HTTP status codes in the 400 range indicate client errors. Among them, 429 specifically means too many requests.
Step 2: Identify the code for rate limiting
The 429 status code is defined to signal that the user has sent too many requests in a given time.
Final Answer:
429 -> Option B
Quick Check:
Rate limit error = 429 [OK]
Hint: Remember 429 means too many requests, a rate limit error [OK]
Common Mistakes:
Confusing 429 with 404 (not found)
Using 500 which is server error
Choosing 401 which means unauthorized
2. Which HTTP header is used to tell the client when to retry after hitting a rate limit?
easy
A. Retry-After
B. Authorization
C. Content-Type
D. User-Agent
Solution
Step 1: Identify headers related to retry timing
The Retry-After header is designed to tell clients how long to wait before retrying a request.
Step 2: Confirm the correct header for rate limit retry
Other headers like Content-Type or Authorization do not indicate retry timing.
Final Answer:
Retry-After -> Option A
Quick Check:
Retry timing header = Retry-After [OK]
Hint: Retry-After header tells when to retry after rate limit [OK]
Common Mistakes:
Choosing Content-Type which describes data format
Confusing Authorization with retry info
Selecting User-Agent which identifies client software
3. What will the following HTTP response indicate?
HTTP/1.1 429 Too Many Requests
Retry-After: 120
Content-Type: application/json
{"error": "Rate limit exceeded. Try again later."}
medium
A. The client should retry immediately
B. The client is unauthorized
C. The server encountered an internal error
D. The client sent too many requests and should wait 120 seconds before retrying
Solution
Step 1: Analyze the status code and headers
Status 429 means too many requests. The Retry-After header with value 120 means wait 120 seconds before retrying.
Step 2: Interpret the JSON error message
The message confirms the rate limit was exceeded and advises to try again later.
Final Answer:
The client sent too many requests and should wait 120 seconds before retrying -> Option D
Quick Check:
429 + Retry-After = wait before retry [OK]
Hint: 429 plus Retry-After means wait specified seconds before retry [OK]
Common Mistakes:
Thinking client can retry immediately
Confusing 429 with unauthorized error
Assuming server error from 429
4. A REST API returns this response when rate limit is exceeded:
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
{"error": "Too many requests"}
What is missing to improve client handling?
medium
A. A Retry-After header indicating when to retry
B. Changing status code to 500
C. Adding Authorization header
D. Removing the error message
Solution
Step 1: Identify missing headers for rate limit response
The response lacks the Retry-After header, which helps clients know when to retry.
Step 2: Understand why Retry-After is important
Without Retry-After, clients may retry too soon, causing more errors or confusion.
Final Answer:
A Retry-After header indicating when to retry -> Option A
Quick Check:
Retry-After header missing = add it [OK]
Hint: Add Retry-After header to guide client retry timing [OK]
Common Mistakes:
Changing status code to 500 which is wrong
Adding Authorization header unrelated to rate limit
Removing error message reduces clarity
5. You want to design a REST API rate limit error response that clearly informs clients about the wait time and reason. Which of the following is the best practice?
hard
A. Return status 200 with a JSON error field indicating rate limit
B. Return status 403 with a plain text message 'Rate limit exceeded'
C. Return status 429 with a Retry-After header and a JSON message explaining the limit
D. Return status 500 with a Retry-After header
Solution
Step 1: Choose correct status code for rate limiting
Status 429 is the standard code for rate limit errors, signaling client to slow down.
Step 2: Include Retry-After header and clear message
Retry-After header tells client how long to wait. JSON message improves clarity and user experience.
Step 3: Evaluate other options
403 is forbidden, not rate limit. 200 means success, which is misleading. 500 is server error, not client rate limit.
Final Answer:
Return status 429 with a Retry-After header and a JSON message explaining the limit -> Option C
Quick Check:
429 + Retry-After + clear message = best practice [OK]
Hint: Use 429 + Retry-After + clear JSON message for best rate limit response [OK]