Как мы знаем, метод POST не является идемпотентным. Если пользователь отправит несколько запросов за короткое время, операция будет повторена.
Например:
- POST-запрос на создание отправки вызывается пользователем.
- Одинаковые отправки разрешены сервером, поэтому, если пользователь отправляет один и тот же запрос дважды, второй не завершается ошибкой из-за нарушения уникального ограничения.
- Пользователь случайно отправляет два запроса, создавая два идентичных ресурса (за исключением автоматически сгенерированного идентификатора ресурса).
Как избежать этого, обеспечив при этом возможность масштабирования моего сервера? Если бы у меня был только один экземпляр, я мог бы добавить временный список тайм-аутов на сервер, который не позволял бы пользователю временно выполнять аналогичные запросы на одном сервере. Однако если запрос будет передан другому экземпляру сервера, этот сервер не будет иметь пользователя в списке тайм-аутов и нормально обработает второй запрос.
Я знаю, что могу реализовать что-то на стороне клиента, например кнопка временной отправки отключена, поэтому пользователи могут отправлять только один запрос за раз, однако есть ли способ справиться с этим на стороне сервера?