301 and 302 redirects in Rest API - Time & Space Complexity
When a web server sends a 301 or 302 redirect, it tells the browser to go to a new address.
We want to understand how the time to handle these redirects grows as more redirects happen.
Analyze the time complexity of handling chained redirects in a REST API.
GET /start
HTTP/1.1 302 Found
Location: /step1
GET /step1
HTTP/1.1 302 Found
Location: /step2
GET /step2
HTTP/1.1 301 Moved Permanently
Location: /final
GET /final
HTTP/1.1 200 OK
This shows a client following a chain of redirects until reaching the final URL.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Each redirect causes the client to make a new request.
- How many times: The number of redirects in the chain determines how many requests happen.
Each additional redirect adds one more request and response cycle.
| Input Size (redirects) | Approx. Operations (requests) |
|---|---|
| 2 | 3 (2 redirects + 1 final request) |
| 5 | 6 (5 redirects + 1 final request) |
| 10 | 11 (10 redirects + 1 final request) |
Pattern observation: The total requests grow linearly with the number of redirects.
Time Complexity: O(n)
This means the time to complete the redirect process grows directly with the number of redirects.
[X] Wrong: "Redirects happen instantly and don't add time."
[OK] Correct: Each redirect requires a new request and response, adding time that adds up with more redirects.
Understanding how redirects affect request time helps you design efficient APIs and troubleshoot slow responses.
"What if the client cached the redirect targets? How would that change the time complexity?"
Practice
301 redirect indicate in a REST API?Solution
Step 1: Understand the meaning of 301 redirect
A 301 redirect means the resource has moved permanently to a new location.Step 2: Compare with other options
Other options describe different HTTP statuses, not 301 redirect.Final Answer:
The resource has moved permanently to a new URL. -> Option CQuick Check:
301 redirect = permanent move [OK]
- Confusing 301 with 302 redirect
- Thinking 301 means resource deleted
- Assuming 301 is for authentication
Solution
Step 1: Identify status codes for redirects
302 is the standard status code for temporary redirects.Step 2: Eliminate other codes
301 is permanent redirect, 404 is not found, 500 is server error.Final Answer:
302 -> Option BQuick Check:
Temporary redirect = 302 [OK]
- Mixing 301 and 302 codes
- Choosing 404 or 500 by mistake
- Not knowing redirect codes
return Response(status=301, headers={'Location': 'https://newsite.com'})Solution
Step 1: Analyze the status code in the response
The code explicitly sets status=301, which means permanent redirect.Step 2: Check the Location header
The Location header points to the new URL, confirming redirect behavior.Final Answer:
301 Moved Permanently -> Option AQuick Check:
Status 301 with Location = permanent redirect [OK]
- Assuming 200 OK without checking status
- Confusing 301 with 302
- Ignoring Location header
return Response(status=301, headers={'Location': 'https://temp.example.com'})Solution
Step 1: Check status code for temporary redirect
Temporary redirects require status code 302, not 301.Step 2: Verify headers
Location header is present and correct, so no error there.Final Answer:
Status code should be 302 for temporary redirect. -> Option DQuick Check:
Temporary redirect = 302, not 301 [OK]
- Using 301 instead of 302 for temporary redirects
- Omitting Location header
- Misunderstanding redirect status codes
Solution
Step 1: Determine redirect type for old endpoints
Old endpoints moved permanently, so use 301 status code.Step 2: Determine redirect type for beta features
Beta features are temporary, so use 302 status code.Final Answer:
301 for old endpoints, 302 for beta features -> Option AQuick Check:
Permanent = 301, Temporary = 302 [OK]
- Swapping 301 and 302 codes
- Using error codes instead of redirects
- Not distinguishing permanent vs temporary
Ready to prove it?
Pass the test and this pattern moves unknown
