Rails - только совершать транзакции, если клиент получил ответ - PullRequest
0 голосов
/ 23 июня 2018

Итак, супер странный вариант использования.

По сути, клиент создает объекты и синхронизирует их с сервером.Сервер сохраняет их и возвращает тот же объект с UID.Когда клиент получает этот объект UID, он удаляет версию клиента и сохраняет версию сервера.

Я беспокоюсь, что клиент отправит объект, и пока сервер проверяет, отключите его.Затем, когда клиент снова отправляет объект, у нас есть дубликаты.

Я мог бы сгенерировать идентификатор клиента, чтобы избежать его ситуации и сохранить его с помощью объекта сервера, но я искал способ сохранить объекты, только есликлиент успешно получает ответ, поэтому мы знаем, что он не будет отправлять запрос

Я погуглил, но ничего не смог найти.Есть ли способ сделать это?

1 Ответ

0 голосов
/ 23 июня 2018

Итак, как я и думал, мой ответ действительно демонстрирует отсутствие понимания того, как работает HTTP.Я подозревал, что это невозможно с этой технологией - и это не так - но на самом деле есть основная проблема, которую мне следовало бы решить.

Правильный ответ - создать идентификатор на клиенте, которыйтакже хранится в базе данных.Причина в том, что это делает запрос идемпотентным , то есть клиент может повторно отправлять один и тот же запрос столько раз, сколько ему угодно, не портя сервер.

Всякий раз, когда сервер получает запросчтобы создать новый объект, он просто проверяет отправленные идентификаторы наших клиентов.Если этот объект уже существует, не создавайте его снова, просто верните объект, сгенерированный сервером.Простой!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...