У меня есть резервный магазин с действиями для загрузки учетных записей. Действие вызывает сервис, подобный так:
const requestOptions = {
method: 'GET',
headers: authHeader()
};
return fetch(`http://localapi.co.uk/api/account/load/${account_id}`, requestOptions)
.then(handleResponse)
.then(account => {
if(account.account.id) {
localStorage.setItem('account', JSON.stringify(account))
}
return account;
})
.catch(redirectToLogin)
Обработчик ответа - это просто функция, которая проверяет свойства ответа .status и .ok и отображает ошибку или выходит из системы, если статус ответа 401. Это прекрасно работает для запросов POST. Когда я вхожу в маршрут входа в систему, любой ответ попадает в первый .then (handleResponse) и обрабатывает его.
Когда я отправляю запрос GET вместо 404, 401, 500 и т. Д., Все пропускают .then (handleResponse) и вместо этого переходят к моему улову. Проблема заключается в том, что из-за того, что catch на самом деле не дает мне объект ответа для работы, я не могу проверить состояние - я хочу делать разные вещи в зависимости от того, был ли get 401 (я хочу выйти из системы) или 500 (я хочу отобразить ошибку пользователя с указанием, что пошло не так), например.
Есть ли решение, которое позволит мне получить ответ или остановить мои запросы GET, попав в .catch, и вместо этого попасть в обработчик ответа, который я написал?
Я использую: