Rethinking CRUD for REST API Designs
Aug 17, 2021Palantir

Summary
This post critiques the limitations of traditional CRUD for REST API designs, highlighting issues with create-unless-exists semantics, the need to update entire resources for single field changes, and the lack of built-in conflict resolution. It proposes alternative API design patterns: Get-and-Set (omnibus create/update/delete, last-write-wins), Get-and-Patch (updating specific fields), Timestamp-Checked (optimistic concurrency using logical clocks), and Append-Only-Log (for applications with defined edits). It also emphasizes the importance of incorporating Search and Security-Change/Hard-Delete operations early in API design.