У меня довольно простой набор API
GET /documents
GET /documents/:id
PATCH /documents/:id
Чтобы предотвратить проблему «потерянных обновлений», я хочу отправить Etag
обратно на GET /documents/:id
, а затем потребовать, чтобы значение было отправлено вIf-Match
заголовок по запросу PATCH
.Затем я сделаю запрос к моей базе данных, сгенерирую Etag
на основе результата и проверю, соответствует ли Etag
тому, что передал пользователь, чтобы определить, не была ли запись под ним обновлена.Здесь довольно распространенные вещи.
Мой вопрос касается вызова GET /documents
.Если потребитель звонит по номеру GET /documents
, чтобы получить все свои документы, находит тот, который хочет обновить, ему нужно будет позвонить по номеру GET /documents/:id
, чтобы получить Etag
этой записи, и, наконец, он может выдать PATCH /documents/:id
call.
Мне любопытно, что другие сделали, чтобы обойти этот дополнительный вызов на GET /documents/:id
только для того, чтобы получить Etag
, но все же предотвратить проблему "потерянного обновления"?