首頁  >  問答  >  主體

angular.js - angularjs如何配置http攔截器,當遇到404應答的時候重新發送請求

目前我只能做到請求返回是404的時候頁面跳到錯誤頁面

    //    创建拦截器
    app.factory('Http404Interceptor', function ($q)
    {
        return {
            responseError: function (response)
            {
                if(response.status == 404){
                    location.href = appURL.fullUrl + 'error';
                }
                return $q.reject(response);
            }
        }
    });
    
    //    配置拦截器给app
    app.config(function ($httpProvider)
    {
        $httpProvider.interceptors.push('Http404Interceptor');
    });

但是現在的需求是當請求返回404的時候,重新發起請求到另外一個連結(如:a.php),要怎麼寫才能讓攔截器實現這個功能?

PHP中文网PHP中文网2714 天前467

全部回覆(1)我來回復

  • 漂亮男人

    漂亮男人2017-05-15 17:04:16

    修正:

    「請求另外一個連結(如:a.php)」的意思是?請另一個api获取数据作为fallback?

    如果是這個意思,那不是還蠻簡單的麼:

    //    创建拦截器
    //之前忘了这里还有个循环依赖的问题,我去
    app.factory('Http404Interceptor', function ($q, $injector)
    {
        return {
            responseError: function (response)
            {
                if(response.status == 404){
                    var $http = $injector.get('$http');
                    return $http.get('anotherUrl');
                }
                return $q.reject(response);
            }
        }
    });
        
    //    配置拦截器给app
    app.config(function ($httpProvider)
    {
        $httpProvider.interceptors.push('Http404Interceptor');
    });

    回覆
    0
  • 取消回覆