2016-04-28 15 views
0

AngularJSの$ httpProviderに関する解決策を見つける際に問題があります。 私はAccessserviceを持っています。サーバーからの応答エラーを処理します。このサービスは401,404 .. httpエラーを処理し、ページへのリダイレクトを行います。

しかし、私はこのAccessServiceを適用しない特定のURLを持っています。どのように私はこれを処理できますか?

config.jsの:

$httpProvider.interceptors.push('MyService'); 

MyServices:私のコントローラで

angular.module('myapp').factory('MyService', function ($q, $location) { 
return { 
    responseError: function (rejection) { 
     var code = rejection.status; 

     if (code === 401) 
      $location.url('/auth'); 

     if (code === 403) 
      $location.url('/unauthorized'); 

     return $q.reject(rejection); 
    } 
}; 
}); 

$scope.sendForm = function(){ 

    CustomService.posting($scope.form).then(function(data){ 
     if(data.status == 200){ 
       // code when 200 
       // no problem here 
     } 

     if(data.status == 415) 
      // line of code 
     if(data.status == 401) 
      // line of code 

    }); 
}; 

特定のコントローラまたはHTTP要求のために、このインターセプタを無効にする方法があります?

ありがとうございました!

+0

AccessServiceでは、URLを確認して、その特定のURLであれば何もしません。 –

+0

どのように?この行$ httpProvider.interceptors.push( 'AccessService'); config.jsでwhritenです – mesmed

+0

私が言ったように:** In AccessService **。インターセプタにコードを追加するコードではありません。 –

答えて

0

これは確かに可能です。より条件付きのロジックでifをラップするだけで済みます。

if (rejection.config.url.match(/*regextomatchroute*/) { 
    //handle the match 
} else { 
    // your current ifs 
} 
関連する問題