📖 Scenario: You are building a simple REST API for managing a list of usernames. The API should prevent adding duplicate usernames.
🎯 Goal: Create a REST API endpoint that adds a username to a list. If the username already exists, the API should respond with a 409 Conflict status code and a clear message.
📋 What You'll Learn
Create a list called usernames with initial usernames
Create a variable called new_username with a username to add
Write code to check if new_username is already in usernames
If it exists, respond with status code 409 and message 'Username already exists'
If it does not exist, add new_username to usernames and respond with status code 201 and message 'Username added'
💡 Why This Matters
🌍 Real World
APIs often need to prevent duplicate entries like usernames or emails. Returning a 409 Conflict status helps clients understand the problem clearly.
💼 Career
Backend developers and API designers must handle conflicts gracefully to build reliable and user-friendly services.
Progress0 / 4 steps
1
Create initial usernames list
Create a list called usernames with these exact values: 'alice', 'bob', 'charlie'
Rest API
Hint
Use square brackets to create a list and separate items with commas.
2
Set the new username to add
Create a variable called new_username and set it to the string 'bob'
Rest API
Hint
Assign the string 'bob' to the variable new_username.
3
Check for duplicate and prepare response
Write an if statement to check if new_username is in usernames. If yes, create a variable status_code with value 409 and a variable message with value 'Username already exists'. Otherwise, add new_username to usernames, set status_code to 201, and message to 'Username added'.
Rest API
Hint
Use if new_username in usernames: to check duplicates and append() to add new usernames.
4
Print the API response
Print the status_code and message variables in this exact format: Status: <status_code>, Message: <message>
Rest API
Hint
Use an f-string to format the print output exactly as shown.
Practice
(1/5)
1. What does the HTTP status code 409 Conflict indicate in a REST API?
easy
A. The request cannot be completed because it conflicts with the current state of the server data.
B. The requested resource was not found on the server.
C. The server encountered an unexpected error while processing the request.
D. The request was successful and a new resource was created.
Solution
Step 1: Understand HTTP status codes purpose
Each HTTP status code has a specific meaning. 409 means conflict with current data.
Step 2: Match 409 meaning to options
The request cannot be completed because it conflicts with the current state of the server data. correctly describes 409 as a conflict preventing request completion.
Final Answer:
The request cannot be completed because it conflicts with the current state of the server data. -> Option A
Quick Check:
409 Conflict = Request conflicts with server data [OK]
Hint: 409 means data conflict stops request completion [OK]
Common Mistakes:
Confusing 409 with 404 Not Found
Thinking 409 means server error (500)
Assuming 409 means success
2. Which of the following is the correct way to respond with a 409 Conflict status in a REST API using HTTP headers?
easy
A. HTTP/1.1 200 OK
B. HTTP/1.1 500 Internal Server Error
C. HTTP/1.1 409 Conflict
D. HTTP/1.1 404 Not Found
Solution
Step 1: Identify correct HTTP status line for 409
The status line must include the code 409 and the phrase 'Conflict'.
But clients report they get 409 even when no conflict exists. What is the likely bug?
medium
A. Clients are sending wrong HTTP methods.
B. The update_resource() function is missing.
C. The server should return 404 instead of 409.
D. The server is not comparing versions correctly; types may differ causing mismatch.
Solution
Step 1: Analyze version comparison logic
If types differ (e.g., string vs int), equality check fails causing false conflicts.
Step 2: Identify likely cause of false 409
Incorrect type comparison leads to always triggering 409 even if versions match logically.
Final Answer:
The server is not comparing versions correctly; types may differ causing mismatch. -> Option D
Quick Check:
Type mismatch in version check causes false 409 [OK]
Hint: Check data types when comparing versions to avoid false conflicts [OK]
Common Mistakes:
Assuming missing update function causes 409
Confusing 409 with 404 errors
Blaming client HTTP methods without evidence
5. You are designing a REST API for editing documents. To prevent update conflicts, you decide to use the 409 Conflict status. Which approach best uses 409 to handle concurrent edits?
hard
A. Always accept updates and overwrite existing data without checks.
B. Require clients to send a version number with updates; if it doesn't match server's current version, respond with 409 and conflict details.
C. Return 409 whenever a client sends an update, regardless of version.
D. Ignore versioning and rely on client retries without conflict responses.
Solution
Step 1: Understand concurrency control with 409
Using version numbers lets server detect if data changed since client last fetched it.
Step 2: Choose approach that uses 409 properly
Require clients to send a version number with updates; if it doesn't match server's current version, respond with 409 and conflict details. uses version check and returns 409 only on real conflicts with details.
Final Answer:
Require clients to send a version number with updates; if it doesn't match server's current version, respond with 409 and conflict details. -> Option B
Quick Check:
Version check + 409 Conflict = best concurrency control [OK]
Hint: Use version numbers and 409 to handle concurrent edits safely [OK]
Common Mistakes:
Overwriting data blindly without conflict checks
Returning 409 for every update request
Ignoring versioning and conflicts
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.