Очевидно, но как часто я встречаю данное упущение: если вы по API обращаетесь в сторонние сервисы, например Google, Intercom, Stripe и так далее, готовтесь, что они часто будут отвечать вам ошибками.
И я имею ввиду не ошибками, связанных с неправильным построением запроса, а ошибками с их серверами, поэтому ловить 502 — это норма.
Есть несколько путей решения проблемы, но самый простой из них — это retry.
Чаще всего он выполнен в формате библиотеки, которая позволяет задать количество попыток, в случае ошибки, точку break и success. В таком случае, когда вы ловите ошибку, не связанную с неправильно составленным запросом, вы просто делаете повторный вызов.
Единственное, о чем стоит подумать заранее — это кейс, при котором на самом деле запрос дошел и правильно обработался, НО вы получили код 502 или нечто схожее. Такое может произойти, например, из-за reverse proxy, который решил обрубить соединение.
В зависимости от важности вызыва решением данного вопроса могут быть:
- Если метод API «чистый», то можно просто еще раз отправить запрос
- Делать повторный запрос и ожидать ответа виде ошибки, формата «Ваши изменения уже были применены»
- Сделать компенсирующий запрос, который проверит успешность предыдущей операции или точно отменит этот эффект. Бывает рискованно или overkill
Короче
Не забывайте про retry