Testen der optimistischen Parallelität mit ETag und If-Match

Verlorene Aktualisierungen sind der unauffälligste Fehler in jeder CRUD-Anwendung: Zwei Clients lesen denselben Datensatz, beide schreiben ihn, und der zweite verwirft stillschweigend die Änderungen des ersten. Optimistische Parallelverarbeitung wandelt dies in einen behandelbaren 412-Fehler um. Der Großteil des Katalogs unterstützt dies, sodass Sie sowohl den Normalfall als auch den Konfliktfall simulieren können.

ETag- und If-Match-Test — request and response sequence Sequence diagram for ETag and If-Match testing: GET /football/v1/standings answers 304 Not Modified. PUT /airline/v1/bookings/{id}/seat answers 412 Precondition Failed. Your client Fun API Playground GET /football/v1/standings 304 Not Modified Ligatabelle — zwischenspeicherbar (ETag / If-None-Match / 304) PUT /airline/v1/bookings/{id}/seat 412 Precondition Failed Sitzplatzwechsel (bei gleichzeitiger Auswahl)
Echte Endpunkte aus dem Katalog – jede der oben genannten Anfragen wird bedient, und jeder angezeigte Statuscode ist ein Statuscode, den dieser Endpunkt tatsächlich zurückgibt.

Wie man es übt

  1. Lesen Sie eine Ressource mit GET und speichern Sie ihren ETag. Schreiben Sie mit PUT und If-Match und prüfen Sie den Erfolg.
  2. Ändern Sie die Ressource mit einer zweiten Anfrage. Wiederholen Sie den ersten PUT mit dem veralteten ETag und erwarten Sie 412.
  3. Versuchen Sie einen Schreibzugriff ohne If-Match. Falls der Endpunkt ihn zulässt, untersuchen Sie das Risiko überschriebener Änderungen.
  4. Senden Sie ein bedingtes GET mit If-None-Match und erwarten Sie 304, wenn sich nichts geändert hat.
  5. Üben Sie dasselbe Prinzip mit Spielstandversionen an den Save-Konflikt-Endpunkten von Retro Quest.

APIs, um es auszuprobieren

Betroffene Statuscodes

Andere Techniken

Einstiegsanleitung · Alle 39 Mock-REST-APIs

Zuletzt aktualisiert