A POST új elemet hoz létre a URI-ben megadott kollekció alatt. Például: POST /articles.
A POST és a PUT közötti legnagyobb különbség, hogy a PUT kérésében használt URI egyértelműen azonosítja a lecserélendő vagy létrehozandó elemet. Például: PUT /articles/1. A POST esetén nem lehet előre tudni, hogy milyen azonosítója lesz az elemnek, míg a PUT esetén igen. Amit írtál az nem igaz ("mindig cserel (a nem letezot is csereli), soha nem kreal"), ugyanis definíció szerint ha az URI-ben meghatározott elem nem létezik, akkor a szerver (ha képes rá), létrehozhatja az elemet:
"If the Request-URI does not point to an existing resource, and that URI is capable of being defined as a new resource by the requesting user agent, the origin server can create the resource with that URI. If a new resource is created, the origin server MUST inform the user agent via the 201 (Created) response. If an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to indicate successful completion of the request."
Sokan használják a PUT metódust módosításra, viszont azt nem veszik figyelembe, hogy a PUT nem egy-egy értéket módosít, hanem az elem meglévő összes adatát lecseréli a kérésben küldött adattal. Sok esetben nem lehetséges vagy nagyon bonyolult egy ilyen kérést küldeni. Ilyen eset például ha a kliensnek nem áll rendelkezésére az elem az összes adata. Ezért módosításra inkább a PATCH metódust érdemes használni: https://tools.ietf.org/html/rfc5789
Tehát:
Több elem listázása: GET /articles
Egy elem lekérése: GET /articles/1
Elem létrehozása: POST /articles
Elem módosítása: PATCH /articles/1
Elem törlése: DELETE /articles/1