Отмена запроса на обновление данных - PullRequest
1 голос
/ 03 апреля 2019

Допустим, у меня есть пользователь, и он пытается обновить данные своего профиля. Запрос отправлен, но Интернет работает слишком медленно или отключился, и запрос продолжает работать вечно.

В Retrofit и OkHttp отменить запрос легко. Но когда это POST / PATCH / PUT / DELETE, результат запроса игнорируется, но сервер по-прежнему полностью обрабатывает запрос (обновляет данные).

Это означает, что если пользователь отменяет обновление и данные обновляются, ответ об успешном обновлении игнорируется.

Есть ли способ прервать запрос и завершить код бэкэнда (в моем случае PHP), который выполняется для обработки запроса?

Ответы [ 2 ]

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

Давайте сначала разберемся с требованием отменить запрос, который вы сделали из-за медленного соединения, и вы не видели ответа от сервера некоторое время.

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

Вы не делаетеНе нужно увеличивать дополнительное бремя проверки события отмены запроса, отправляемого клиентом в коде на стороне сервера, поскольку завтра это может потребоваться для большой аудитории.

Надеюсь, это проясняется, поскольку безопасные решения для выполнения откатов БД, некоторые людиперейти на теневые обновления, используемые платежными решениями, не подходят для этого сценария.

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

То же самое относится и к реализации других сценариев, вы должны проверить уже существующее,

В случае запроса на отмену: Люди не следуют этому, поскольку это требует дополнительных затрат и требует двойных усилий.

Надеюсь, теперь это проясняет то, что вы искали,

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

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

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

...