It&#x27;s not that they are preferable, it&#x27;s just that these verbs were invented for a reason, and people often ignore that because they didn&#x27;t RTFM.<p>POST can be thought of as pasting a file into a folder from your clipboard, without necessarily knowing what its filename is. It oughta tell you the filename after you paste so you can retrieve it later. Typically, in a REST setting, you&#x27;d POST a thing to a collection (e.g. POST &#x2F;api&#x2F;v1&#x2F;things)<p>PUT can be thought of as piping stuff to a file, when you know the filename ahead of time. It completely overwrites any existing data in that file. You&#x27;d PUT to the path where the resource should exist (e.g. PUT &#x2F;api&#x2F;v1&#x2F;things&#x2F;1)<p>PATCH can be thought of a version control diff. It&#x27;s actually really powerful, but unfortunately, there&#x27;s no widespread format to express diffs of deep structural data often seen in REST APIs, so most people avoid it. A PATCH request should contain instructions on how to add and remove sub-fields from a resource. It can be used on collections to batch-add&#x2F;remove items, and it can be used in single resources to modify them without overwriting other existing fields (or even do all of those with a single request)