2016-11-15 4 views
1

角度2のHTTPインターセプタを作成する方法はありますか?エラーに応じて特定のルートにリダイレクトできますか?たとえば、サービスが404で応答するときは/ not-foundルートに進み、401/403で応答するときは/ unauthorizedルートに移動します。エラー時のHTTPサービスリダイレクト

私は私のサービスにルータを注入し、エラー処理方法でそれを使用しようとしましたが、それはちょうど私が以前のようなAngularJSでそれを行うことができました

Unhandled Promise rejection: Provider parse errors: Cannot instantiate cyclic dependency!

このエラーがスローされますso:

function authInterceptor ($q, $injector) { 
    return { 
    request: function (request) { 
     return request; 
    }, 
    requestError: function (request) { 
     return $q.reject(request); 
    }, 
    response: function (response) { 
     return response; 
    }, 
    responseError: function (response) { 
     if (response.status === 401 || response.status === 403) { 
     $injector.get('$state').go('unauthorised'); 
     } else if (response.status === 404) { 
     $injector.get('$state').go('notFound'); 
     } 

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

答えて

1

HTTPモジュールと傍受要求と応答を拡張することができます。 私はそれを示すためにgistを書きました。