1. POST
1. POST to a URL creates a child resource at a server defined URL.
2. POST creates a child resource, so POST to /items creates a resources that lives under the /items resource. Eg. /items/1. Sending the same post packet twice will create two resources.
2. POST
1. PUT to a URL creates/replaces the resource in its entirety at the client defined URL.
2. PUT is for creating or replacing a resource at a URL known by the client.Therefore: PUT is only a candidate for CREATE where the client already knows the url before the resource is created. Eg. /blogs/nigel/entry/when_to_use_post_vs_put as the title is used as the resource key
3. PATCH
1. PATCH to a URL updates part of the resource at that client defined URL. The relevant specification for PUT and POST is RFC 2616 §9.5ff.
2. PUT replaces the resource at the known url if it already exists, so sending the same request twice has no effect. In other words, calls to PUT are idempotent.
Reference
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5
https://stackoverflow.com/questions/630453/put-vs-post-in-rest/2590281#2590281