Załóżmy, że mamy takie API:
GET /resource
PUT /resource
W przypadku GET mamy taką odpowiedź
{
"resource_data": ...,
"hash": "ccc59ac8", // policzony na podstawie resource_data
}
teraz, żeby wykonać PUT muszę najpierw wywołać GET, żeby dowiedzieć się jaki hash ma bieżący stan. Bez tej informacji PUT nie powiedzie się, bo hash musi się zgadzać z bieżącym stanem. Dzięki temu mam pewność, że użytkownik wołający PUT wie jaki jest stan i wykonana zmiana (np. dodane nowego elementu do resource) jest atomowe tj. operacja PUT wywali się, jeśli ktoś zmienił stan pomiędzy GET a PUT.
Czy taki pattern ma jakąś nazwę. Czy są jakieś inne (lepsze) rozwiązania tego problemu:?