Предотвращение проблемы потерянных обновлений без причинения неудобств моим потребителям - PullRequest
1 голос
/ 24 апреля 2019

У меня довольно простой набор 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, но все же предотвратить проблему "потерянного обновления"?

1 Ответ

0 голосов
/ 24 апреля 2019

Включите Etag в качестве свойства документа в дополнение к включению его в заголовок при необходимости. Это позволит сэкономить как двусторонние обращения, так и клиентам будет проще получить доступ к Etag при локальном сохранении документа за рамками первоначального вызова.

...