Как обработать ошибку при выполнении HTTP-запроса в AngularJS?
@taylor
В AngularJS для обработки ошибок при выполнении HTTP-запросов можно использовать механизм обещаний (Promise). Каждый HTTP-запрос возвращает обещание, которое может быть обработано при успешном выполнении запроса или при возникновении ошибки.
Пример использования механизма обещаний для обработки ошибки при выполнении HTTP-запроса:
1 2 3 4 5 6 7 |
$http.get('/someUrl')
.then(function(response) {
// успешное выполнение запроса
}, function(error) {
// ошибка выполнения запроса
console.log('Error:', error);
});
|
В данном примере мы отправляем GET-запрос по адресу '/someUrl'. Если запрос выполнится успешно, обработчик then будет вызван с параметром response, который будет содержать ответ на запрос. Если же запрос завершится с ошибкой, обработчик then будет вызван с параметром error, который будет содержать информацию об ошибке.
Также можно добавить глобальный обработчик ошибок используя сервис $httpProvider:
1 2 3 4 5 6 7 8 9 10 11 12 |
$httpProvider.interceptors.push(function($q, $injector) {
return {
responseError: function(rejection) {
if (rejection.status === 401) {
$injector.get('$state').go('login'); // перенаправление на страницу авторизации
} else {
console.error('HTTP error:', rejection);
}
return $q.reject(rejection);
}
};
});
|
В этом примере мы добавляем перехватчик (интерсептор) $httpProvider, который будет вызываться в случае возникновения ошибки при выполнении запроса. Метод responseError будет вызван, если запрос завершится неудачно. Внутри этого метода мы можем обработать ошибку и выполнить дополнительные действия (например, перенаправление на страницу авторизации). Возвращаемое значение $q.reject(rejection) отклоняет обещание и передает ошибку в обработчики ошибок.