PATCH ist die HTTP-Methode, die eine Ressource nur teilweise ändert. Der Client schickt nur das, was sich ändern soll, und der Rest bleibt, wie er ist. Festgelegt wurde PATCH 2010 in RFC 5789, später als die übrigen Methoden.
- PATCH
Die HTTP-Methode zum Ändern einzelner Teile einer Ressource, ohne sie vollständig neu zu übermitteln.
Beispiel: „Für die neue Telefonnummer schickt die App per PATCH nur dieses eine Feld.“Abgrenzung zu PUT: PUT ersetzt die ganze Ressource. PATCH beschreibt eine Änderung an ihr.
Wie PATCH funktioniert
Im Body steht eine Beschreibung der Änderung. Am einfachsten ist JSON Merge Patch nach RFC 7396: Ein JSON-Objekt mit den Feldern, die neue Werte bekommen. Genauer ist JSON Patch nach RFC 6902, eine Liste von Schritten wie hinzufügen, ersetzen und entfernen.
{ "telefon": "+49 40 123456" }Für Formulare und Schnittstellen im Alltag reicht fast immer die einfache Form.
PATCH im Vergleich mit den anderen Methoden
Die Übersicht zeigt alle neun HTTP-Methoden. Sicher heißt, dass eine Methode nichts verändert; idempotent heißt, dass mehrfaches Senden dasselbe Ergebnis hat wie einfaches.
Methode | Wofür | Sicher | Idempotent |
|---|---|---|---|
Ressource abrufen, ohne etwas zu ändern | ja | ja | |
wie GET, aber nur die Kopfzeilen | ja | ja | |
Daten senden, meist etwas Neues anlegen | nein | nein | |
Ressource vollständig ersetzen | nein | ja | |
PATCH | Ressource teilweise ändern | nein | nein |
Ressource löschen | nein | ja | |
erlaubte Methoden erfragen | ja | ja | |
Tunnel über einen Proxy aufbauen | nein | nein | |
Anfrage zur Fehlersuche zurückspiegeln | ja | ja |
Warum PATCH nicht idempotent sein muss
Weil eine Änderung relativ sein kann. Ein PATCH, das einen Artikel zum Warenkorb hinzufügt, legt beim zweiten Senden einen zweiten dazu. Ein PATCH, das nur einen Wert setzt, bleibt dagegen bei Wiederholung folgenlos.
Schnittstellen, die PATCH anbieten, dokumentieren deshalb, wie sie mit Wiederholungen umgehen.