Is there a standardized way to indicate a null value for a field/parameter in a RESTful PATCH request?
Let's say I have an object, and I want to just flat out remove a property from the object and persist that change to the MT/DB. On the client side, I would just delete the property (in JS), but when PATCHing to my REST API layer, is there a standardized way to indicate that the property (not the object, just the property) should be deleted?
For the sake of clarity/example, here is a hypothetical PATCH route for the object:
PATCH /service/thing/{id}
and some sample PATCH payloads:
single property update:
{ "myprop": "changed" }
multi-property update:
{ "myprop": "changed", "anotherprop": "changed" }
For a PATCH where you want to get rid of "myprop" you obviously can't just submit this payload:
{ }
Would you do something like:
{ "myprop": undefined }
or, would you create a whole new DELETE route:
DELETE /service/thing/{id}/myprop
or, something else?
I would implement PATCH just like you propose. In a way that accepts partial representation for update.
This way I would send always the JSON partial representation.
PATCH { "myprop": "newvalue" }
And for deletion of the myprop the empty value. Sending back the empty value when requesting a GET is up to you. You can always ignore null values (which is not the same as empty).
PATCH { "myprop": null }
Note null rather than undefined. null is a JSON value.
But this is just my 2cents.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With