What's the difference between PUT and PATCH in REST APIs
In REST APIs, both PUT and PATCH are used to update resources, but they have different semantics and usage patterns. Here's a breakdown of their differences:
PUT
- Full Update: PUT requests are generally used to update a resource completely. When you send a PUT request, you are expected to send the entire resource representation, even if you're only updating a subset of its fields. If certain fields are omitted, they may be considered null or reset in the resource.
- Idempotent: PUT is defined as idempotent, meaning that making the same PUT request multiple times will have the same effect as making it once. For example, sending the same updated resource repeatedly will not change the outcome after the first request.
- Resource Identity: When you use PUT, the client usually specifies the URL of the resource being updated, which represents the complete resource on the server.
- Use Case: Use PUT when you want to replace an entire resource or create a new resource at a specified URI if it does not already exist.
PATCH
- Partial Update: PATCH requests are used to apply partial modifications to a resource. You only need to include the changes you want to make, not the entire resource representation.
- Idempotent (typically): PATCH is considered idempotent by convention, but it depends on how the server implements it. If the same PATCH request is sent multiple times, it should ideally result in the same resource state each time, but this is not strictly ensured like with PUT.
- Resource Identity: Like PUT, PATCH also operates on a specific resource's URL. However, the data sent in the body of the PATCH request only contains the fields that need to be updated.
- Use Case: Use PATCH when you want to make partial updates or modifications to a resource. This is especially useful when the resource is large, and you only need to update a few fields.
Summary
- PUT: Full resource representation required; replaces the entire resource.
- PATCH: Only the fields to be updated are needed; applies partial changes.
In general, choose PUT for complete replacements, and choose PATCH for partial updates to existing resources.
The main differences between PUT and PATCH in REST APIs relate to how they handle resource updates:
PUT - Complete Resource Replacement
Purpose: Replace the entire resource with the provided data
Key characteristics:
- Idempotent: Multiple identical requests have the same effect
- Complete replacement: Sends the full resource representation
- Missing fields: Typically sets unspecified fields to null/default values
- Creates or updates: Can create a resource if it doesn't exist
Example:
PUT /users/123
Content-Type: application/json{
"name": "John Doe",
"email": "john@example.com",
"age": 30,
"department": "Engineering"
}
This replaces the entire user resource.
PATCH - Partial Resource Update
Purpose: Apply partial modifications to a resource
Key characteristics:
- Not necessarily idempotent: Depends on the implementation
- Partial update: Sends only the fields that need to change
- Preserves existing data: Unspecified fields remain unchanged
- Modify only: Typically only updates existing resources
Example:
PATCH /users/123
Content-Type: application/json{
"email": "newemail@example.com",
"age": 31
}
This updates only the email and age fields, leaving other fields unchanged.
When to Use Each
Use PUT when:
- You want to replace the entire resource
- You have the complete resource representation
- You want idempotent behavior
- You might need to create the resource if it doesn't exist
Use PATCH when:
- You want to update specific fields only
- You want to preserve existing data
- You're working with large resources where sending the full object is inefficient
- You want to minimize bandwidth usage
Quick Comparison
| Aspect | PUT | PATCH |
|---|---|---|
| Update type | Complete replacement | Partial modification |
| Data sent | Full resource | Only changed fields |
| Idempotent | Yes | Not guaranteed |
| Unspecified fields | Set to null/default | Remain unchanged |
| Bandwidth | Higher | Lower |
Choose based on your specific use case and whether you need complete replacement or partial updates.
Both PUT and PATCH are HTTP methods used to update resources in a REST API, but they differ in how they handle the update. The key difference lies in the scope of the update:
PUT (Replace):
- Full Replacement: PUT is used to completely replace the entire resource with the data provided in the request. You must send all the attributes of the resource, even if you only want to change one.
- Idempotent: Calling PUT multiple times with the same request data should result in the same outcome as calling it once. It effectively overwrites the existing resource with the given representation.
- Common Use Cases:
- Updating a resource where you have all the necessary data to represent it in its entirety.
- Replacing a resource entirely with a new version.
PATCH (Partial Update):
- Partial Modification: PATCH is used to apply partial modifications to a resource. You only need to send the attributes you want to change.
- Non-Idempotent (Typically): While technically PATCH can be designed to be idempotent, it's more common and typically intended to be non-idempotent. Multiple identical PATCH requests might have different results if the resource has been modified in the meantime. Think of incrementing a counter – each PATCH request changes the value.
- Common Use Cases:
- Updating a single field or a small subset of fields in a resource.
- Applying a delta or a set of instructions to modify a resource.
Here's an analogy:
Imagine you have a document (your resource):
- PUT (Replace): You completely rewrite the entire document with a new version. Even if you only changed one word, you'd have to send the entire rewritten document.
- PATCH (Partial Update): You send a separate instruction sheet that describes only the changes you want to make (e.g., "Change word 'incorrect' on page 3, line 5 to 'correct'").
Summary Table:
| Feature | PUT (Replace) | PATCH (Partial Update) |
|---|---|---|
| Scope | Full resource replacement | Partial resource modification |
| Data Required | All attributes of the resource | Only the attributes to be changed |
| Idempotency | Yes (should be) | Typically No (can be implemented as idempotent) |
| Typical Use Case | Complete update, resource replacement | Partial updates, applying changes to a resource |
Example (JSON):
Let's say you have a user resource:
{
"id": 123,
"name": "John Doe",
"email": "john.doe@example.com",
"age": 30
}PUT Request (to change the email):
You would need to send the entire user object, even though you're only changing the email:
PUT /users/123 HTTP/1.1
Content-Type: application/json{
"id": 123,
"name": "John Doe",
"email": "john.d@newemail.com",
"age": 30
}
PATCH Request (to change the email):
You only need to send the changed field:
PATCH /users/123 HTTP/1.1
Content-Type: application/json{
"email": "john.d@newemail.com"
}
Important Considerations:
- Client-Side vs. Server-Side: The decision of whether to use PUT or PATCH is largely determined by the server-side implementation. The client can request either, but the server dictates the behavior.
- API Design: Carefully consider the use cases for your API when deciding which method to support. PATCH can be more efficient for clients who only need to make small changes. PUT can be simpler if you want to ensure the entire resource is always in a consistent state.
- Framework Support: Many web frameworks provide built-in support for handling PUT and PATCH requests. Consult your framework's documentation for specifics.
In conclusion, use PUT when you have a complete representation of the resource and want to replace it entirely. Use PATCH when you only want to update specific parts of the resource. PATCH is generally more efficient for partial updates.
💡 Try this comparison yourself:Compare AI models side-by-side on SNEOS
Analysis
This comparison demonstrates the different approaches each AI model takes when responding to the same prompt.
Try This Yourself
Want to compare AI models with your own questions? Visit LetMeSneosForYou.com to generate your own AI model comparisons.
This comparison was generated using the Let Me Sneos For You ToolPublished: October 28, 2025 | Models: ChatGPT, Claude, Gemini