Sobes.tech
Senior

Mi az az idempotencia? Tudnád példákkal elmagyarázni HTTP-módszerekkel?

sobes.tech MI

Válasz az MI-től

Az idempotencia egy művelet tulajdonsága, amely szerint ennek a műveletnek a többszöri végrehajtása ugyanazt az eredményt adja, mint az egyszeri végrehajtás.

HTTP módszerek kontextusában:

  • GET — idempotens, mivel a forrás lekérdezése nem változtatja meg a szerver állapotát, és az ismételt kérések ugyanazt az eredményt adják.
  • PUT — idempotens, mert ugyanazzal az adatokkal többszöri frissítés ugyanarra az állapotra vezet.
  • DELETE — idempotens, mert többszöri törlés ugyanazt az eredményt adja az első törlés után (a forrás már törölve van).
  • POST — nem idempotens, mivel minden kérés általában új erőforrást hoz létre vagy megváltoztatja a szerver állapotát, és az ismételt kérések eltérő eredményeket eredményezhetnek (például több rekord létrehozása).

Példa:

PUT /users/123
{
  "name": "Иван"
}

Ha ezt a kérést többször végrehajtja, az 123-as azonosítójú felhasználó neve "Иван" lesz — az állapot az első kérés után nem változik.

Ezért az idempotencia fontos a API megbízhatósága és kiszámíthatósága szempontjából, különösen hálózati hibák miatti ismételt kérések esetén.