2017-04-24 5 views
1

エラーコードを500または403に処理するために角度インターセプタを使用しようとしています。私はカスタムビジネスの実装を持っている他のコードの。しかし、それはインターセプタを使用して、成功応答として角度治療エラーの応答を作ると私の成功のコールバック.thenが呼び出されるようです。これは奇妙なことではありません。200-299コードは成功応答として扱われていると考えています。私のコード インターセプタを使用しているときに、エラーコード(500)の応答が正常な応答として処理される理由

は:

function appInterceptorFn(){ 
     var interceptor = { 
      responseError: function (config) { 
       if (config && config.status === cramConfig.FORBIDDEN_ACCESS_CODE) { 
        $rootScope.$emit('ERROR_EVENT', config); 
       } 
       return config; 
      } 
     } 

     return interceptor; 
    } 

はそれを避けるために行うことができるものがありますが、私は別の実装を示し、このlinkを訪れているが、私はインターセプターを使用したい

AngularJS v1.3.17を使用しています好ましくは、

これは既知の問題ですか?

答えて

2

あなたのオブジェクトを「通常」に戻すことによって、エラーを成功として扱うように角度を指示します。

あなたは

return $q.reject(config); 

であなたの

return config; 

を交換する必要が説明

あなたがここにドキュメントを見れば:

https://docs.angularjs.org/api/ng/service/$http#interceptors、次が表示されます
// optional method 
'responseError': function(rejection) { 
    // do something on error 
    if (canRecover(rejection)) { 
    return responseOrNewPromise 
    } 
    return $q.reject(rejection); 
} 

多くのドキュメントではありませんが、オブジェクトや約束を返すと、エラーがないかのようにエラーが解決されることがわかります。エラーを再投げたい場合は、$q.reject()

+0

私はどのような約束を拒否しますか?インバウンド応答オブジェクトから約束を出さなければならないのですか? –

+0

あなたの時間のおかげで男..それは期待どおりに動作します.. –

関連する問題