Kas kõik HTTP meetodid on idempotentsed?
sobes.tech AI
Vastus AI-lt
Ei, mitte kõik HTTP meetodid on idempotentsed.
Idempotentsus tähendab, et kui sama päringut tehakse mitu korda sama parameetritega, siis serveri poolne tulemus pärast esimest edukat täitmist ei muutu.
Peamised HTTP meetodid ja nende idempotentsus:
| Meetod | On idempotentne | Otstarve |
|---|---|---|
GET |
Jah | Andmete saamine |
HEAD |
Jah | Vastuse päiste saamine |
PUT |
Jah | Ressursi loomine või täielik asendamine |
DELETE |
Jah | Ressursi kustutamine |
POST |
Ei | Andmete saatmine ressursi loomisele või tegevuse teostamiseks |
PATCH |
Ei | Ressursi osaline uuendamine |
POST ja PATCH ei ole idempotentsed, kuna iga nende täitmine võib viia uue ressursi loomise või oleku muutmiseni sõltuvalt rakendusest, mis ei ole üheselt määratletud pärast esimest edukat täitmist. Näiteks võib korduv POST päring kasutaja loomise korral viia mitme kasutaja loomisele.
Näide mitte-idempotentne POST:
{
"username": "testuser"
}
Sellise POST päringu saatmine võib iga kord luua uue kasutaja koos username: "testuser".
Näide idempotentne PUT:
{
"id": 123,
"status": "completed"
}
Sellise PUT päringu saatmine ressursile ID-ga 123 määrab selle staatuse "completed". Korduv täitmine ei muuda staatust, kui see on juba "completed".