Обработка ответа 503 в клиенте - PullRequest
0 голосов
/ 06 августа 2020

Я работаю с некоторыми publi c api, и иногда я получаю из этого ответа api 503 - я понял это, потому что сервер временно не может обработать запрос (перегрузка).

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

  • do i нужно продолжить отправку запроса с некоторым таймаутом? или мне нужно кинуть и сказать пользователю, чтобы он снова загрузился? Любая помощь будет идеальной

Ответы [ 3 ]

0 голосов
/ 06 августа 2020

На мой взгляд, вы должны сообщить пользователю о ситуации в качестве предупреждения и в фоновом режиме пытаться получать данные за каждые 5 или 10 секунд (на ваш выбор).

На стороне сервера вы можете проверить " автоматические выключатели »для этого подхода.

Если вы разрабатываете мобильное приложение или PWA (если у вас есть локальные управляемые данные), вы можете управлять своими изменениями в своем локальном хранилище, а после установления соединения синхронизировать локальные данные с ваш api (если ваш бэкэнд это предоставляет).

0 голосов
/ 06 августа 2020

Есть несколько способов разобраться с делом, и обычно решение зависит от требований проекта. Так что да, один из способов справиться с этим - повторить запрос. Следует принять во внимание несколько вещей: вы не хотите рассылать спам-запросы к службе, у которой уже есть проблемы, поэтому вы можете ограничить количество повторных попыток и использовать экспоненциальную функцию (каждая следующая повторная попытка ждет дольше). Если вы используете axois, вы можете попробовать ax ios -retry , или нетрудно реализовать некоторую оболочку вокруг fetch. Также можно делегировать это решение пользователю - т.е. показать некоторую ошибку и кнопку повтора.

0 голосов
/ 06 августа 2020

В случае «Если я отправлю запрос еще раз, я получу достоверные данные». Я бы посоветовал вам отправить запрос еще раз с некоторым таймаутом.

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

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

...