Задать вопрос
nuclear_kote
@nuclear_kote

Возможно ли изменить результат запроса в interceptor'e?

Например если запрос упал с timeout'ом заменить ответ на какой то другой.
  • Вопрос задан
  • 133 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
yarkov
@yarkov
Помог ответ? Отметь решением.
/*global angular*/
(function () {
	'use strict';

	angular
		.module('App')
		.factory('httpErrorResponceInterceptor', ['$q', '$injector', '$rootScope', '$log',
												  httpErrorResponceInterceptor]);

	/**
	 * Интерсептор для перехвата ответов сервера, которые содержат ошибку.
	 * Реализует обработку ошибочных ответов сервера (http кодов).
	 * Реагирует только на коды 400, 401, 403, 404, и 500
	 *
	 * @name httpErrorResponceInterceptor
	 */
	function httpErrorResponceInterceptor($q, $injector, $rootScope, $log) {
		var self = {};

		self.responseError = function (response) {
			if (response.status == 401){
				return $q.reject(response);
			}
			else if (response.status == 400){
				return $q.reject(response);
			}
			else if (response.status == 403) {
				return $q.reject(response);
			}
			else if (response.status == 404) {
				return $q.reject(response);
			}
			else if (response.status == 500) {
				return $q.reject(response);
			}
			
			return $http(response.config);
		};

		return self;
	}

})();

Меняйте объект response и возвращайте ))
Вырезал из проекта и убрал лишний код, поэтому куча if-ов
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы