Проблема, которую вы описываете, сводится к тому, чтобы избежать того, что называется double-add .Как уже упоминали другие, вам нужно сделать свои посты идемпотентными.
Это может быть легко реализовано на уровне платформы.Фреймворк может хранить кэш завершенных ответов.Запросы должны иметь уникальный запрос , чтобы любые повторные попытки обрабатывались как таковые, а не как новые запросы.
Если успешный ответ теряется на пути к клиенту, клиентуПовторите попытку с тем же уникальным запросом, а затем сервер ответит своим кэшированным ответом.
У вас останется долговечность кэша, как долго хранятся ответы и т. д. Один из подходов заключается в удалении ответов с сервера.кешировать через определенный промежуток времени, это будет зависеть от вашего домена приложения и трафика и может быть оставлено в качестве настраиваемого шага на платформе.Другой подход заключается в том, чтобы заставить клиента отправлять подтверждения.Подтверждения могут быть отправлены в виде отдельных запросов (обратите внимание, что они также могут быть потеряны) или в виде дополнительных данных, добавляемых на реальные запросы.
Хотя то, что я предлагаю, похоже на то, что предлагают другие, я настоятельно рекомендую вамчтобы сохранить этот уровень устойчивости сети, нужно выполнять только это, обрабатывать запросы / ответы отбрасывания и не позволять ему обрабатывать дублирующиеся ресурсы из отдельных запросов, что является задачей прикладного уровня.Объединение обеих частей объединит все функциональные возможности и не оставит четкое разделение обязанностей.
Непростая проблема, но если вы будете поддерживать ее в чистоте, вы сможете сделать свое приложение намного более устойчивым к плохим сетям, не вводя слишком много.большая сложность.
А для некоторых связанных с этим переживаний других перейдите здесь .
Удачи.