2017-08-03 4 views
0

Ich weiß, dass PUT idempotent ist, aber wie kann ich es programmatisch sicherstellen? Welche Bedingungen muss ich erfüllen, um einen vollständig idempotenten Endpunkt zu schaffen?So erstellen Sie einen idempotenten Endpunkt

+0

Meinst du wirklich _idempotent_ oder meinst du _safe_ (nebenwirkungsfrei)? Idempotent bedeutet nur, dass Sie dasselbe Ergebnis erhalten, wenn Sie _PUT_ auf einer Ressource aufrufen. Sie ersetzen nur den Inhalt der Ressource durch den neuen Inhalt, das Ergebnis sollte immer (beispielsweise) ein HTTP-Statuscode 200 sein (solange die Ressource existiert). – andih

Antwort

1

Aus RESTful Service Sicht für eine Operation (oder Service-Aufruf) werden Kunden idempotent, immer wieder den gleichen Anruf tätigen können, während das gleiche Ergebnis. Mit anderen Worten, die Ausführung mehrerer identischer Anforderungen hat den gleichen Effekt wie die Ausführung einer einzelnen Anfrage. Beachten Sie, dass während idempotente Operationen das gleiche Ergebnis auf dem Server (keine Nebenwirkungen) produzieren, die Antwort selbst möglicherweise nicht die gleiche sein (z. B. eine Ressource Status kann sich zwischen Anforderungen ändern).

Eine PUT soll eine Ressource mit neuen Werten aktualisieren, die im Anfragetext empfangen wurden. Daher sollte das Ergebnis auf dem Server nicht geändert werden (ungleich POST zum Beispiel, wenn mehrere Anforderungen entweder zu einem Konfliktfehler führen oder wenn mehrere Ressourcen erstellt werden), ob es nur ein- oder mehrmals gesendet wird.

+0

Sie müssen darauf achten, dass es einen Unterschied zwischen _idempotent_ und _safe_ gibt. _Idempotent_ bedeutet, dass Sie dieselbe Methode beliebig oft aufrufen können, und Sie erhalten das gleiche Ergebnis. Dies bedeutet jedoch nicht, dass die Ressource nicht geändert wird. Bestes Beispiel ist die _delete_ Methode/http Verb. _POST_ und _PATHCH_ sind weder _idempotent_ noch _safe_, während _PUT_ und _DELETE_ _idempotent_ sind, aber * nicht * _safe_. – andih

Verwandte Themen