HTTP metódusok és idempotencia
GET, POST, PUT, PATCH és DELETE jelentése, safe/idempotent szemantika és miért fontos retry, cache és API design szempontból.
Röviden
A HTTP metódus nem puszta endpoint-névadási stílus: szabványos szemantikát hordoz arról, milyen jellegű műveletet kér a kliens. A safe metódus célja nem állapotmódosítás, az idempotens művelet pedig ismételve ugyanazt a kívánt végállapotot célozza.
Mit jelent a http metódusok és idempotencia?
A HTTP metódus nem puszta endpoint-névadási stílus: szabványos szemantikát hordoz arról, milyen jellegű műveletet kér a kliens. A safe metódus célja nem állapotmódosítás, az idempotens művelet pedig ismételve ugyanazt a kívánt végállapotot célozza.
Metódus-szemantika
01
GET
02
POST
03
PUT
04
PATCH
05
DELETE
Hogyan működik a gyakorlatban?
GET és HEAD safe/idempotens szemantikájú; PUT és DELETE idempotensnek definiált, bár mellékhatások – például logok – történhetnek. POST tipikusan nem idempotens, PATCH pedig a patch formátumától és művelettől függően lehet vagy nem lehet az.
- GET: reprezentáció lekérése.
- POST: feldolgozás vagy új művelet indítása.
- PUT: cél-erőforrás létrehozása/cseréje definiált URI-n.
- PATCH: részleges módosítás.
- DELETE: erőforrás eltávolításának kérése.
Gyakorlati fejlesztői szemlélet
Fizetésnél vagy más retry-érzékeny POST-nál alkalmazásszintű idempotency key megakadályozhatja, hogy hálózati újrapróbálás duplán hajtsa végre az üzleti műveletet.
Gyakori hibák és félreértések
- GET endpointtal törölni csak azért, mert könnyű linkelni.
- Idempotensnek azt hinni, hogy a válasz minden ismétlésnél byte-ra azonos.
- PUT és PATCH különbségét teljesen figyelmen kívül hagyni API contractban.
Források és szabványok
A technikai részletekhez elsődleges szabványokat és karbantartott hivatalos dokumentációt használok. Frameworkök, böngészők és webes API-k idővel változhatnak, ezért implementálás előtt mindig ellenőrizd az aktuális dokumentációt is.
Kapcsolódó ByBence Academy