Комментарии 8
На использование такого подхода к отправке запросов меня натолкнула библиотека Redux-saga. Меня попросили в одном реакт проекте поправить кое-что и я там увидел использование yield при запросах. Не знаю правильно ли это было настроено, но один запрос там (в консоле) повторялся один за другим без остановки, т.к. ответ приходил не 200. Так вот, мне показалась интересной такая реализация и собственно так я и решил сделать в похожей манере отправку запросов с бэка. Хотя я не преследовал цель реализовать дизайн паттерн сага. Вот статья на хабре о redux-saga.
Есть ещё вариант авторизации, когда в заголовке передают зашифрованную строчку. И авторизация происходит по ней.
Зачем придумывать кучу раз как повторить запрос по условию, если можно использовать готовую библиотеку и прописать нужные условия для повторения?
Жаль, это не пулл реквест, прокомментировал бы. В коде проблема есть почти на каждой строке.
На использование такого подхода к отправке запросов меня натолкнула библиотека Redux-saga. Меня попросили в одном реакт проекте поправить кое-что и я там увидел использование yield при запросах. Не знаю правильно ли это было настроено, но один запрос там (в консоле) повторялся один за другим без остановки, т.к. ответ приходил не 200. Так вот, мне показалась интересной такая реализация и собственно так я и решил сделать в похожей манере отправку запросов с бэка. Хотя я не преследовал цель реализовать дизайн паттерн сага. Вот статья на хабре о redux-saga.
Каждый yield — это точка останова приложения. Т.е. этакий Command в CQS. А в сагах он лишь позволяет достигнув какой-то определённой точки иметь возможность откатить все изменения назад, воспроизведя команды в обратном порядке (с их компенcацией):
try {
yield сделать_заказ->otherwise(отменить_заказ);
yield списать_деньги->otherwise(начислить_деньги);
yield доставить_заказ;
} catch(Throwable) {
// Воспроизвести всё взад
}
В запросах оно имеет смысл лишь когда есть задача отменить запрос в случае ошибки и вернуть всё взад.
Есть ещё вариант авторизации, когда в заголовке передают зашифрованную строчку. И авторизация происходит по ней.
Запросы к апи с бэка с повтором если был ответ 401 (UnAuthorized) на примере Mercuryo. PHP, Yii2