0

Вопрос в том, как лучше всего обрабатывать ошибки с помощью вызовов HTTP REST. Должен ли я использовать перехватчики или декораторы? Мои функции отдыха выглядят примерно так:Обработка угловых ошибок http с использованием перехватчиков

queryFunction : function (config) { 
    var defer = $q.defer(); 
    var config = {}; 
    $http.get(someUrl, config) //or http.put, delete 
     .then(function (response) { 
     defer.resolve(response.data); 
     }) 
     .catch(function (ex) { 
     defer.reject(ex); 
     }); 
    return defer.promise; 
    }, 

Как будет выглядеть самый простой перехватчик?

ответ

1

Вот код для родового $ HTTP ErrorInterceptor:

app.factory('ErrorInterceptor', ['$q', function($q) { 
    return { 
     responseError: function(rejection) { 
      // An error message is shown for all kind of server errors 
      if (rejection.status == -1) { 
      //alert('Backend is not working'); 
      //use rejection.data variable 
      } 
      return $q.reject(rejection); 
     } 
    }; 
    }]) 

Затем он может быть включен в приложение конфигурации

app.config(['$httpProvider', function($httpProvider) { 
    $httpProvider.interceptors.push('ErrorInterceptor'); 
}) 
+0

Спасибо, что был ответ, который я искал. – playerone

+0

Можете ли вы опубликовать общий тестовый тест на жасмин для кода выше? – playerone

+0

Чтобы ответить на мой собственный вопрос, если кому-то это нужно: 'code "use strict"; описывают ('ErrorInterceptor', функция() { вар ErrorInterceptor; вар httpProviderIt; beforeEach (функция() { модуль ('MODULENAME', функция ($ httpProvider) {// сохранить наш перехватчик httpProviderIt = $ httpProvider; }); инъекционные (функция (_ErrorInterceptor_) { ErrorInterceptor = _ErrorInterceptor_; console.log (ErrorInterceptor); });} ); она ('должна быть определена ErrorInterceptor', функция() { ожидать (ErrorInterceptor) .toBeDefined(); }); }); – playerone

Смежные вопросы