Teilweise Aktualisierung ohne PATCH-Chaos
- Matt
Ein PUT ersetzt die ganze Ressource, was bedeutet, dass der Client alle Felder kennen muss. Für Teiländerungen gibt es zwei Standards, und der weniger bekannte ist meist der bessere.
JSON Patch beschreibt Operationen und ist mächtig, aber umständlich:
[{ "op": "replace", "path": "/email", "value": "neu@example.com" }]
JSON Merge Patch schickt einfach das, was sich ändert:
{ "email": "neu@example.com", "telefon": null }
Ein null bedeutet dabei löschen. Genau darin liegt der Haken: Ein Feld auf null zu setzen und ein Feld wegzulassen sind unterschiedliche Dinge, und mit den üblichen Modellklassen sieht man den Unterschied nicht mehr.
Wer das sauber will, braucht einen Typ, der zwischen „nicht gesetzt” und „auf null gesetzt” unterscheidet. Das ist die Stelle, an der viele Implementierungen still falsch sind.