PUT for full replacement in Rest API - Time & Space Complexity
When using PUT to fully replace a resource, it's important to know how the time to process the request changes as the resource size grows.
We want to understand how the server's work grows when replacing larger resources.
Analyze the time complexity of the following REST API PUT request handler.
// PUT /items/{id}
function replaceItem(id, newItem) {
// Validate newItem fields
validate(newItem);
// Overwrite existing item fully
database[id] = newItem;
// Save changes
saveDatabase(database);
}
This code replaces an existing item fully with new data sent by the client.
Look for operations that repeat or scale with input size.
- Primary operation: Validating and saving the entire new item data.
- How many times: The validation and saving steps process each field or data element once.
As the size of the new item grows, the work to validate and save it grows too.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 fields | About 10 validation and save steps |
| 100 fields | About 100 validation and save steps |
| 1000 fields | About 1000 validation and save steps |
Pattern observation: The work grows directly with the number of fields in the item.
Time Complexity: O(n)
This means the time to process the PUT request grows linearly with the size of the data being replaced.
[X] Wrong: "PUT requests always take constant time because they just replace data."
[OK] Correct: The server must process every part of the new data, so larger data means more work and more time.
Understanding how PUT requests scale helps you explain API performance and design choices clearly in real projects.
"What if the PUT request only updated some fields instead of replacing all? How would the time complexity change?"
Practice
Solution
Step 1: Understand PUT method purpose
PUT is designed to replace the entire resource at the given URL with the data sent in the request.Step 2: Compare with other methods
Unlike PATCH which updates partially, PUT replaces fully. GET retrieves, DELETE removes.Final Answer:
Fully replaces the resource at the URL with the provided data -> Option CQuick Check:
PUT = full replacement [OK]
- Confusing PUT with PATCH partial update
- Thinking PUT deletes resource
- Assuming PUT only retrieves data
/users/123 with new data in JSON format?Solution
Step 1: Identify method for full replacement
PUT is the HTTP method used to fully replace a resource at a specific URL.Step 2: Match method with URL and body
PUT /users/123 with JSON body replaces the user data fully. POST is for creation, PATCH partial update, GET retrieves.Final Answer:
PUT /users/123 with JSON body -> Option BQuick Check:
PUT + URL + JSON = full replace [OK]
- Using POST instead of PUT for replacement
- Using PATCH for full replacement
- Sending body with GET request
/users/42 initially having data {"name": "Alice", "age": 30}, what will be the resource data after this PUT request?PUT /users/42
{"name": "Bob"}
Solution
Step 1: Understand PUT replaces entire resource
The PUT request replaces the whole resource data with the new JSON body, removing any fields not included.Step 2: Apply replacement to given data
Original data had name and age, but PUT body only has name "Bob", so age is removed.Final Answer:
{"name": "Bob"} -> Option AQuick Check:
PUT replaces all fields, missing fields removed [OK]
- Assuming PUT merges fields like PATCH
- Expecting old fields to remain if not sent
- Thinking PUT deletes resource
PUT /items/10
{"price": 100}
But after sending, the resource lost all other fields except price. How can you fix this to keep other fields intact?
Solution
Step 1: Identify cause of lost fields
PUT replaces the entire resource, so missing fields in body are removed.Step 2: Choose method to update partially
PATCH updates only specified fields, keeping others intact.Final Answer:
Change PUT to PATCH to update partially -> Option DQuick Check:
PATCH = partial update, keeps other fields [OK]
- Trying to fix by adding missing fields manually
- Sending empty body with PUT
- Using GET to update resource
/users/77 with new data {"name": "Eve", "age": 28}. The resource may or may not exist. Which is the best approach using PUT to ensure the resource is created if missing or fully replaced if exists?Solution
Step 1: Understand PUT behavior for create or replace
PUT can create the resource if it does not exist, or fully replace it if it does.Step 2: Apply PUT with full data to target URL
Sending PUT with full user data to /users/77 ensures creation or full replacement.Final Answer:
Send a PUT request with full user data to /users/77 -> Option AQuick Check:
PUT = create or replace resource fully [OK]
- Using POST which creates new resource with new ID
- Using PATCH which only updates existing resource partially
- Using GET before update unnecessarily
Ready to prove it?
Pass the test and this pattern moves unknown
