GET
- GET is idempotent and can be requested any number of times
- GET requests can be cached, can be distributed & shared
- GET request is less secured compared to POST.
POST
- Used to Create a resource
- Post is not idempotent.x++ is not idempotent
- POST is NOT idempotent. So if you retry the request N times, you will end up having N resources with N different URIs created on server.
PUT
- Used to Create or Modify a resource
- PUT is idempotent, so if you PUT an object twice, it has no effect.
- x=5 is idempotent.You can PUT a resource whether it previously exists, or not (eg, to Create, or to Update)!
When to use Put and Post
You can use both PUT or POST for creating the resource until the client decides the resource location in the Server.But if the server decides the resource location using
POST /questions/HTTP/1.1 Host: www.example.com/
Note that the following is an error:
POST /questions/HTTP/1.1 Host: www.example.com/
If the URL is not yet created, you should not be using POST to create it while specifying the name. This should result in a ‘resource not found’ error because
You could though do something like this to create a resources using POST:
POST /questions HTTP/1.1 Host: www.example.com/
Note that in this case the resource name is not specified, the new objects URL path would be returned to you.
PUT is Used to create a resource, or overwrite it. While you specify the resources new URL.
PUT /questions/HTTP/1.1 Host: www.example.com/
To overwrite an existing resource:
PUT /questions/HTTP/1.1 Host: www.example.com/
PATCH
Patch request says that we would only send the data that we need to modify without modifying or effecting other parts of the data. Ex: if we need to update only the first name, we pass only the first name.PATCH – HTTP.PATCH can be used when the client is sending one or more changes to be applied by the server. The PATCH method requests that a set of changes described in the request entity be applied to the resource identified by the Request-URI. The set of changes is represented in a format called a patch document.
In PUT request, the enclosed entity would be considered as the modified version of a resource which residing on server and it would be replaced by this modified entity.
In PATCH request, enclosed entity contains the set of instructions that how the entity which residing on server, would be modified to produce a newer version.
DELETE
DELETE is pretty easy to understand. It is used to delete a resource identified by a URI.On successful deletion, return HTTP status 200 (OK) along with a response body, perhaps the representation of the deleted item (often demands too much bandwidth), or a wrapped response (see Return Values below). Either that or return HTTP status 204 (NO CONTENT) with no response body. In other words, a 204 status with no body, or the JSEND-style response and HTTP status 200 are the recommended responses.