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' を記述する(){ のvar ErrorInterceptor; VAR httpProviderIt; beforeEach(関数(){ モジュール( 'moduleNameの'、関数($ httpProvider){ //私たちのインタセプタを保存 httpProviderIt = $ httpProvider; }); 注入(関数(_ErrorInterceptor_){ ErrorInterceptor = _ErrorInterceptor_; にconsole.log(ErrorInterceptor); }); }); それは( 'ErrorInterceptorを定義することがいるはず'、関数(){ expect(ErrorInterceptor).toBeDefined(); }); }); ' – playerone

関連する問題