If a PATCH request is applied to a resource that doesn't exist yet, is it then allowed to create the resource or do I need a separate POST/PUT request in that case?
The PATCH
request would go to the URL for the resource for example: PATCH /object/1234
. If the object with the ID 1234 is in the database I'll create it, otherwise I'll update it.
The PATCH
request doesn't contain all fields, that's why I don't use PUT
.
RFC 5789 states that PATCH should be used "to modify an existing HTTP resource." It would probably be best to implement a POST/PUT request in order to adhere to the HTTP standards.
Whilst a server can create a new resource (as explained in Heiko's answer), you'd be advised to only implement conditional PATCH
, where a client sends an If-Unmodified-Since
or If-Match
header, ensuring the patch is applied only to the version of the resource the client thought they were editing. Conditional PATCH
requests preclude the idea of editing a non-extant resource. If a client attempts to send a request without a precondition, the correct response is 428 Precondition Required. See RFC 6585.
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