Beide Methoden verändern eine bestehende Ressource und unterscheiden sich in der Bedeutung des Anfragetextes. Ein PUT-Anfragetext beschreibt den kompletten neuen Zustand: Felder, die Sie auslassen, werden grundsätzlich entfernt oder zurückgesetzt. Ein PATCH-Anfragetext hingegen beschreibt die Änderungen in einem vom Server dokumentierten Format – beispielsweise ein Teilobjekt oder eine Liste von Operationen wie bei JSON Patch.
PUT ist per Definition idempotent: Das zweimalige Senden derselben vollständigen Repräsentation führt zum gleichen Ergebnis. Bei PATCH ist dies nicht garantiert, da Operationen wie "append to this list" oder "increment" bei zweimaliger Anwendung ein anderes Ergebnis liefern als bei einmaliger Anwendung. Daher profitieren insbesondere PATCH-Anfragen von If-Match, sodass ein wiederholter PATCH-Versuch abgelehnt statt verdoppelt werden kann.
Dieser PATCH-Befehl entspricht im Grunde "PUT without the fields you did not change" . Viele APIs implementieren ihn so, aber die Methode selbst gibt dies nirgends explizit an – sowohl ein PATCH-Befehl im Merge-Stil als auch ein JSON-Patch-Dokument sind PATCH-Befehle, haben aber eine sehr unterschiedliche Semantik. Und viele "PUT" -Endpunkte führen in der Praxis eher einen Merge-Befehl als einen Austausch durch. Testen Sie daher, was Ihr Endpunkt mit einem fehlenden Feld macht.
Die Pizza-API nimmt eine partielle Aktualisierung auf PATCH /pizza/v1/orders/{id} entgegen, und das Protocol Lab akzeptiert einen RFC 6902 JSON Patch auf PATCH /protocol/v1/documents/{id} ; die Zeichen-PUT-Endpunkte ersetzen und prüfen If-Match.
Diese Seite auf Englisch lesen
Alle Glossarbegriffe · Testtechniken · Alle 39 Mock-REST-APIs
Zuletzt aktualisiert