Start here. This is the direct spoken answer to practice first.
Why this question matters
Lost updates occur when two clients read the same version and both write as if nothing changed. HTTP preconditions let the update contract carry the version the client actually observed.
The read response includes an ETag for the current resource version. The client sends that value in If-Match with PUT, PATCH, or DELETE. The server applies the change only if the current strong validator still matches. If another write changed the resource first, the server returns 412 Precondition Failed instead of overwriting it. An API that requires this protection can return 428 Precondition Required when the client omits the condition.