What is the difference between PUT and POST

PUT and POST are two commonly used methods, but they serve different purposes and have distinct characteristics.

Key Differences Between PUT and POST

Purpose:

  • POST: Used to create a new resource on the server.
  • PUT: Used to update an existing resource or create a resource if it does not exist.

Idempotency:

  • POST: Not idempotent. Multiple POST requests will create multiple resources.
  • PUT: Idempotent. Multiple PUT requests with the same data will produce the same result as a single request.

Usage:

  • POST: Typically used to submit data to be processed to a specified resource. It creates a new resource as a subordinate of the specified resource.
  • PUT: Typically used to update a resource or create it if it doesn't exist. It replaces the current representation of the resource with the request payload.

Example Scenarios

Example 1: Creating a New Resource with POST

Scenario:

You have a collection of users, and you want to add a new user to this collection.

Request:

POST /users
Content-Type: application/json
{  

"name": "John Doe",

"email": "john.doe@example.com"

}

Explanation:

- POST creates a new user as a subordinate of the /users resource.

- The server generates a unique ID for the new user and returns it in the response.

Example 2: Updating an Existing Resource with PUT

Scenario:

You want to update the information of an existing user with ID 123.

Request:

PUT /users/123
Content-Type: application/json
{  

"name": "John Doe",

"email": "john.doe@newdomain.com"

}

Explanation:

- PUT updates the user with ID 123.

- If the user with ID 123 does not exist, PUT can create a new user with this ID and the provided data.