我如何在拦截器中手动使 angular $http 请求失败

How do i manually fail an angular $http requests in an interceptor

所以我有一个服务器每次都返回 200 作为响应。我需要检查响应是否有错误 response.data.error 如果我发现错误,我需要将 http 请求发送到应用程序代码中的 catch 方法。

这是我想要发生的事情的一个例子..

拦截器代码

// interceptor code
{
  response:function(response){
    if (response.data.error) {
      return $q.reject(response)
    }else{
      return response
    }
  },
  responseError:function(rejection){
    // error handling logic

    return $q.reject(rejection)
  }
}

应用代码

// application code
$http.get('/api/stuff')
  .then(function(){
    // do success stuff
  }).catch(function(){
    // the function i want to run!!!
  })

尝试通过以下方式捕获错误:

$http.get('/api/stuff')
  .then(function(data){
    console.log(data); // do success stuff
  }, function(error){
      console.log(error); // will catch your error I hope
  }

我认为 .catch 不会捕获它,您需要在 .then 块中执行检查。

好吧,这更像是一个愚蠢的错误。这是我做错的地方。
像个笨蛋一样,我 return 在函数内部而不是直接在响应内部编辑。所以我最终做的是创建一个标志,如果该标志为真,那么 return 直接在响应函数上。

拦截器代码

// interceptor code
{
  response:function(response){
    myCustomErrorFunction(){
      if (response.data.error) {
        return $q.reject(response)
      }else{
        return response
      }
    }
  },
  responseError:function(rejection){
    // error handling logic

    return $q.reject(rejection)
  }
}

应用代码

// application code
$http.get('/api/stuff')
  .then(function(){
    // do success stuff
  }).catch(function(){
    // the function i want to run!!!
  })

感谢大家的帮助。